您的位置:首页 > 其它

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

2018-02-08 17:36 585 查看

相关说明

在复合查询中填写

0.0 ES地址 : http://user:password@elasticsearch.gz.baidubce.com: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐