Elasticsearch 中 bool组合查询(must 和 should 组合)

这篇具有很好参考价值的文章主要介绍了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 才能实现 操作。文章来源地址https://www.toymoban.com/news/detail-405723.html

到了这里,关于Elasticsearch 中 bool组合查询(must 和 should 组合)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch查询 - Bool查询

    在Elasticsearch中, Bool查询 是一种 组合查询 ,可以用于将多个查询组合在一起,并使用 逻辑运算符 (AND、OR、NOT)对它们进行组合。与其他三种基本查询不同,Bool查询可以实现更为复杂的查询需求。 下面对四种基本查询和Bool查询进行简单对比: Term Query: 精确匹配 单个值,

    2024年02月06日
    浏览(44)
  • 第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

    DSL查询分类 全文查询、分词查询、非分词查询、地理坐标查询、组合查询 match_all 查询所有,不需要查询条件,固定写法_search 第一个hits就是命中的数据 ,total就是条数,第二个hits是source嘞   全文检索查询 我们不要整多个字段查询,参与的字段越多,查询速度越慢,如果有

    2024年01月16日
    浏览(81)
  • ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

    查询所有:查询所有数据,一般在测试时使用。march_all,但是一般显示全部,有一个分页的功能 全文检索(full text)查询:利用分词器对用户的输入内容进行分词,然后去倒排索引库匹配。例如: match_query mutil_match_query 精确查询:根据精确词条值查询数据,一般查找的时k

    2024年02月12日
    浏览(53)
  • ElasticSearch中结构化查询(term、terms、range、exists、match、bool)

            term 主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型): 当前数据库中的数据:         terms 跟 term 相似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:      

    2024年02月05日
    浏览(48)
  • Elasticsearch嵌套查询must和mustNot

    场景:在bug关联固件的时候将bug的数据放到固件的数据下,可以根据固件数据下是否包含bug数据查询出已关联和未关联的数据。 ES文档结构 目录 1.must查询此bug关联的固件 java代码 2.mustNot查询此bug未关联的固件 java代码 3.劫后余生        4.闲来无事must_not跟must下的多条件关

    2024年02月07日
    浏览(39)
  • ES中同时使用should和must导致只有must生效解决方案

    背景:es嵌套查询,条件a等于某一个值且条件b等于某两个值甚至更多。 第一步:单独条件b采用 should 匹配多个值,可以查到预期的结果,代码如下: 第二步:单独条件a采用must匹配单个值,也可以查到预期的结果,代码如下: 第三步:合并起来查询,a和b条件同时启用,代

    2024年02月15日
    浏览(32)
  • Elasticsearch 组合查询的使用

    这里介绍Elasticsearch 中的组合查询的使用细节,Elasticsearch支持类似于在SQL中使用AND、OR以及NOT的运算符,可以通过组合嵌套这些条件进行复杂的数据筛选。 数据准备 复用上篇文章的mapping和数据供这里的demo使用。 mapping: 数据: filter的用法 在使用filter查询的时候,会使用一

    2024年02月08日
    浏览(30)
  • 7-Elasticsearch组合查询和全文检索

    Elasticsearch组合查询 组合查询–布尔查询 组合查询中的常用的查询方式:布尔查询。 它将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起。 布尔查询是把多个子查询组合成一个布尔表达式,所有子查询之间逻辑关系是and,只有当一个文档满足布尔查询

    2024年02月04日
    浏览(46)
  • springboot整合elasticsearch8组合条件查询

    整合过程见上一篇文章 springboot整合elasticsearch8 1.es8多条件组合查询 2.使用scroll进行大数据量查询

    2024年02月16日
    浏览(55)
  • ES的bool查询

    must:与关系,相当于关系型数据库中的 and。 should:或关系,相当于关系型数据库中的 or。 must_not:非关系,相当于关系型数据库中的 not。 filter:过滤条件。 range:条件筛选范围。 gt:大于,相当于关系型数据库中的 。 gte:大于等于,相当于关系型数据库中的 =。 lt:小于

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包