es should查询--一个字段多个值的查询情况 相当于mysql中的in的操作,OR 和AND用法

本文探讨了在Elasticsearch(ES)中如何处理一个字段包含多个值的查询场景,主要聚焦于`should`查询和`minimum_should_match`参数的使用。由于`terms`查询不支持`minimum_should_match`,故推荐使用`should`来实现类似`IN`操作的效果。文章通过实例展示了在Kibana中使用`should`查询,并指出了在ES 2.3.3版本中`terms`与`minimum_should_match`的不兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中,ES,遇到了一个字段多个值的查询情况。可以用should 和 terms。其中 minimum_should_match 表示最小匹配项数量.

可以参考这篇文章:elasticsearch查询api:terms query

下面是尝试:在kibana中运行

terms:

{
  "query": {
    "terms": {
      "subopt": [
        "lianmaiStu",
        "end_lianmaiStu"
      ],
      "minimum_should_match": 1
    }
  }
}

但是发现报错了:

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "[terms] query does not support [minimum_should_match]",
        "line": 8,
        "col": 31
      }
    ],
    "type": "parsing_exception",
    "reason": "[terms] query does not support [minimum_should_match]",
    "line": 8,
    "col": 31
  },
  "status": 400
}

查找一番后,发现。ES不支持terms 中加minimum_should_match ,具体查看:terms query does not support minimum_match in Elasticsearch 2.3.3

 

2、should: 是可以使用的满足条件。

GET zhiboevent_test_201908/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": { "opt": "useropt" }},
        {"match": {"lid": "113446603_79"}}
      ],
      "should": [
        {
          "match": {
            "subopt": "lianmaiStu"
          }
        },
        {
          "match": {
            "subopt": "end_lianmaiStu"
          }
        }
      ],
      "minimum_should_match":1
    }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值