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

在工作中,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
    }
  }
}

 

你可能感兴趣的:(ES,PHP)