nodejs使用elasticsearch检索某个时间段的数据

const elasticsearch = require('elasticsearch');
const moment = require('moment');

const date = moment().format('YYYY-MM-DD');
let resultData = [];


/**
 * 从ES里面检索出当天的日志记录含有xxxxxx的信息
 */
async function esGetlogInfo() {
    let resultData = [];
    // es检索的条件
    var searchInfo = {
        // index: 'xxx-app-logs-'+date, // 根据index的信息可以选择获取当天的记录
        // q: 'xxxxxxx',
        type: 'logs',//只获取日志类型的数据,相当于table
        size: 10000, //获取的条数,默认是10,最大值是10000
        body:  {
           query: {
               bool: {
                   must : {
                       query_string : { default_field : "message", query : "xxxxxxx" }
                   },
                   filter: {
                       range: { "timestamp": { "gte": "now-24h", "lte": "now"} }
                   }
               }
           }

        }

    };

    const esClient = new elasticsearch.Client({
        host: 'https://xxxxxx-es.amazonaws.com/',
        log: 'error'
    });
    let platformList = [];
    await esClient.search(searchInfo).then(function (re) {
        const dataList  = re.hits.hits;
        dataList.map(function(value){
            let messArr = value._source.message.split(" ");
            if(!platformList.includes(messArr[2])) {
                platformList.push(messArr[2]);
                const error_msg = JSON.parse(messArr[3]).data.error_msg;
                resultData.push('</br>'+messArr[2] + ":"+error_msg);
            }
        });
    }, function (err) {
        console.trace(err.message);
    });
    return resultData;
}

猜你喜欢

转载自blog.csdn.net/Crystalqy/article/details/80570362