Elasticsearch查询must与should不能同层级使用
elasticsearch 查询 不能 must should 层级 使用
2023-09-27 14:28:03 时间
最近,在使用es做数据查询时,用了must与should组合查询,发现should下所有条件都不满足得时候,竟然也能查询出来结果
must和should同时使用,如下例子
{
"from": 0,
"size": 20,
"query": {
"bool": {
"must": [
{
"term": {"order_id": { "value": 2133456244}}
},
{
"term": {"sku_id": {"value": 1000342267312}}
}
],
"should": [
{
"term": {"creator": {"value": "zhangsanhh"}}
},
{
"terms": {"dept_id_1": [8636,4460]
}
}
]
}
}
}
这时候会发现,当must下的条件都满足的时候,查询结果发现没有满足should下的任何一个条件的数据也包含在结果集内,should好像最小匹配了,变得可有可无了,should失效了。这显然不是我们想要的查询结果
显然must和should不能在同一个层级使用,should必须放在must的内层且用bool包括起来。也就是一山不容二虎,要么去掉,要么被收编
修改后,如下
{
"from": 0,
"size": 20,
"query": {
"bool": {
"must": [{
"term": {"order_id": {"value": 2133456244}}
},
{
"term": {"sku_id": {"value": 1000342267312}}
}, {
"bool": {
"should": [{
"term": {"creator": {"value": "zhangsanhh"}}
},
{
"terms": {"dept_id_1": [8636, 4460]}
}
]
}
}
]
}
}
}
相关文章
- ElasticSearch高级篇(数据聚和、自动补全、数据同步、分片集群)
- Elasticsearch 5.4 Mapping详解
- Elasticsearch 日常维护命令
- Elasticsearch常用索引操作语句和查询语句
- 财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析
- 【ElasticSearch】ES 读数据,写数据与搜索数据的过程
- 简单测试Elasticsearch 7.0
- Elasticsearch简介及C#操作库
- Elasticsearch调优篇 02 - 高效求交算法大比拼
- Apache Solr vs Elasticsearch-feature
- 【Elasticsearch教程21】分页查询以及Array数组排序 nested排序 详细案例
- Elasticsearch教程(32) ES 聚合查询后过滤 Distinct Group By Having功能
- 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
- ElasticSearch深浅分页查询及原理
- ElasticSearch的term多条件与terms多值查询
- elasticsearch查询之图书智能推荐
- elasticsearch查询之大数据集分页查询
- elasticsearch,使用normalizer优化keyword字段的查询
- 对于ElasticSearch与Hadoop是如何互相调用的?
- 大数据ELK(十六):Elasticsearch SQL(职位查询案例)
- ElasticSearch学习笔记 | Aggregations执行聚合
- Elasticsearch 常用基本查询
- SpringData集成Elasticsearch
- 分布式日志分析系统(二):Zipkin的介绍以及在Elasticsearch的部署
- Elasticsearch 常见的 8 种错误及最佳实践
- Elasticsearch之聚合查询介绍与使用(附RestAPI代码案例)