Elasticsearch 中 bool组合查询(must 和 should 组合)
需求
查询考试成绩是60分或90分的女生。
所以查询条件应该这么写 sex == '女' && ( score == 60 || score ==90 );
先看下bool的语法
{"query": {"bool": {"must": [{},...], //相当于AND"must_not": [{},...], //相当于NOT"should": [{},...] //相当于OR}}
}
在ES中的实现
方式一:
在bool查询的must 中再嵌套一层bool来做should过滤。
GET stu/_search
{"query": {"bool": {"must": [{"term": {"sex": {"value": "女"}}},{"bool": {"should": [{"term": {"score": {"value": "60"}}},{"term": {"score": {"value": "90"}}}]}}]}}
}
方式二:
使用 minimum_should_match 选项,至少匹配一项should子句。
GET stu/_search
{
"query": {
"bool": {
"must": [
{"term": {"sex": {"value": "女"}}}
],
"should": [
{"term": {"score": {"value": "60"}}},
{"term": {"score": {"value": "90"}}}
],
"minimum_should_match": 1
}
}
}
注意:
must 和 should 的条件并列组合时,参数 minimum_should_match 默认值为0 (即 should 的条件可以都不满足)。这也是 must 和 should 组合查询时,should 失效的原因。
should下有多个条件时,我们必须设置 minimum_should_match = 1 才能实现 或 操作。
Elasticsearch 中 bool组合查询(must 和 should 组合)相关推荐
- Elasticsearch中的Term查询和全文查询
Elasticsearch中的Term查询和全文查询 前言 Term 查询 exists 查询 fuzzy 查询 ids 查询 prefix 查询 range 查询 regexp 查询 term 查询 ...
- ElasticSearch中的简单查询
前言 最近修改项目,又看了下ElasticSearch中的搜索,所以简单整理一下其中的查询语句等.都是比较基础的.PS,好久没写博客了..大概就是因为懒吧.闲言少叙书归正传. 查询示例 http:// ...
- es java聚合查询只有10_关于在elasticSearch中使用聚合查询后只显示10个bucket的问题...
先看下面es查询语句 { "size": 0, "aggs" : { "all_articleId" : { "terms&quo ...
- Elasticsearch 4: 相关性检索和组合查询
目录 1. 相关性评分 2. 相关度模型 2.1 布尔模型 2.2 向量空间模型 2.3 概率模型 2.4 语言模型 3. TF/IDF 4. BM25 4.1 词频饱和度 4.2 长度归一化 5. ...
- ElasticSearch实现高亮、范围查询和多条件组合查询(java和kibana)
ElasticSearch客户端配置参考之前的博客 1.高亮 高亮的本质其实是将搜索结果中需要高亮的字段进行替换 public List<Map<String,Object>> ...
- 在Elasticsearch中查询Term Vectors词条向量信息
这篇文章有点深度,可能需要一些Lucene或者全文检索的背景.由于我也很久没有看过Lucene了,有些地方理解的不对还请多多指正. 更多内容还请参考整理的ELK教程 关于Term Vectors 额, ...
- 【Elasticsearch】在Elasticsearch中查询Term Vectors词条向量信息
1.概述 转载:https://www.cnblogs.com/xing901022/p/5348737.html 关于Term Vectors 额,对于这个专业词汇,暂且就叫做词条向量吧,因为实在想 ...
- Elasticsearch(es) 查询语句语法详解
Elasticsearch 查询语句采用基于 RESTful 风格的接口封装成 JSON 格式的对象,称之为 Query DSL.Elasticsearch 查询分类大致分为全文查询.词项查询.复合查 ...
- 跟乐乐学ES!(三)ElasticSearch 批量操作与高级查询
上一篇文章:跟乐乐学ES!(二)ElasticSearch基础. 下一篇文章:跟乐乐学ES!(四) java中ElasticSearch客户端的使用. 批量操作 有些增删改查操作是可以进行批量操作的, ...
最新文章
- h264和h265多维度区别
- 【电商福利】双十二优惠福利专场
- [architecture]-ARMV8的The current Program Counter (PC)介绍
- 【es6】谈谈Promise
- SlopOne推荐算法
- Qt数字与字符串之间的相互转换
- [luoguP1095] 守望者的逃离(DP)
- CMMI与Agile敏捷开发比较之一:两者的本质区别
- 不要相信程序员在加班时间写的代码
- TortoiseSVN - Download下载 - 1.5.4
- 【深度学习】卷积神经网络原理
- C语言 逻辑运算符及其优先级
- RTX3080 Ti 怎么样 RTX3080 Ti性能相当于什么水平
- 高德地图android 缓存,高德地图定位不刷新,感觉有缓存
- 验证码——python去除干扰线
- iOS与unity交互、opencv 草稿
- Windows 10家庭版启用远程桌面的方法
- Oracle 查询工具 在WIN7 64位下安装PLSQL
- GCJ-02火星坐标系、BD-09百度坐标系和WGS-84坐标系转换
- sql、DB、DBMS分别是什么,他们之间什么关系?