使用ES做简单的时间条件过滤+模糊查询+精确匹配+关键字排除

相关说明

在复合查询中填写

0.0 ES地址 : http://user:[email protected]:8999/cluster_id/

0.1 搜索的日志索引 : prod-logs/_search

0.2 请求方式 : POST

1. 查询出包含 log_geo 的数据 “wildcard”: { “message”: “log_geo” }

此处 log_geo 前面有*表示搜索以log_geo结尾的数据

log_geo后面有* 表示搜以log_geo开始的数据,

log_geo前后都有*就是通用匹配包含log_geo的记录

“wildcard”: { “message”: “log_geo” }

2. 查询某个时间段的数据

“range”: { “@timestamp”: { “gt”: “2018-02-08T07:00:00.056000000+00:00”,”lt”: “2018-02-08T08:00:00.056000000+00:00” } }

#注意 时区减去8小时

3. 条件查询与条件排除数据

3.1 match 包含provider 的数据

{ “match”: { “message”: “type:provider” } }

3.2 must_not 类似于 must 做排除使用

排除包含 “must_not”: { “match”: { “message”: “dateTime:2018-02-08 15:59” } },

4. from 表示起始的记录的ID

5. size 表示显示的记录数

查询语句 1,2,3可以组合,也可以单独使用

查询语句 如果得不到想要的结果应该是ES的分词导致的

{
  "query": {
    "bool": {
      "must": [
        { "range": { "@timestamp": { "gt": "2018-02-08T07:00:00.056000000+00:00","lt": "2018-02-08T08:00:00.056000000+00:00" } }  }
        ,   
        {  "wildcard": { "message": "*cp_geo*" }  }
        ,
        { "match": { "message": "*type:platform*" } }
      ],
      "must_not": { "match": { "message": "*deviceTypeCode:DTout00000000*" } },
      "should": []
    }
  },
  "from": 0,
  "size": 50,
  "sort": {  "@timestamp": "desc"  },
  "aggs": {}
}

参考文章

http://blog.csdn.net/dm_vincent/article/details/41720193
https://www.cnblogs.com/pilihaotian/p/5830754.html

你可能感兴趣的:(ES)