es 查询

 


前提

ES在查询过程中比较多遇到符合查询,既需要多个字段过滤也需要特殊情况处理。

bool(组合查询)

  • must 所有的语句都 必须(must) 匹配,与 AND 、= 等价。
  • must_not 所有的语句都 不能(must not) 匹配,与 NOT 、!= 等价。
  • should 至少有一个语句要匹配,与 OR 等价。
字段介绍类型
must文档必须匹配must查询条件数组
should文档应该匹配should子句查询的一个或多个数组
must_not文档不能匹配该查询条件数组
filter过滤器,文档必须匹配该过滤条件,跟must子句的唯一区别是,filter不影响查询的score

案例:

查看sql 状态为EXCEPTION 和 开始时间大于2021-04-22 日的数据。

select * from hadoop_impala where (queryState = "EXCEPTION" and startTime > '2021-04-22');

答案:

query = { "query": { "bool": { "must": [ { "match": { "queryState": "EXCEPTION" } }, { "range": { "startTime": { "gt": dtt } } } ] } } }

聚合查询

先分组,再计算每组的总和值

  • 案例一:
select sum(peakUserMemory), proxyuser from presto group by proxyuser;
  • 结果:
{ "query": { }, "aggs": { "proxyusers": { "terms": { "field": "proxyuser", "size": 1000 }, "aggs": { "sum_memory": { "sum": { "field": "peakUserMemory" } } } } } }

分组统计排序取topn

GET /hadoop_impala*/_search { "query": { "bool": { "must": [ { "term": { "queryType": { "value": "QUERY" } } } ] } }, "aggs": { "proxyusers": { "terms": { "field": "parse_sql", "size": 10000 }, "aggs": { "top_sales_hits": { "top_hits": { "sort": [ { "durationMillis": { "order": "desc" } } ], "_source": { "includes": [ "durationMillis", "parse_sql" ] }, "size": 2 } } } } } }

having

GET cars/_search { "size": 0, "aggs": { "colors": { "terms": { "field": "color" }, "aggs": { "avg_price": { "avg": { "field": "price" } }, "bucket_filter": { "bucket_selector": { "buckets_path": { "avgPrice": "avg_price" }, "script": "params.avgPrice>4000" } } } } } }

__EOF__

本文作者彬在俊
本文链接https://www.cnblogs.com/erlou96/p/16878362.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   彬在俊  阅读(372)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示