例如,我得到三个项目,例如:

{"arr":["a", "b", "c"]},
{"arr":["a", "b"]},
{"arr":["a",  "c"]}

我的搜索是这样的:
"query":{
    "bool":{
        "must":[
            {
                "term":{
                    "arr":{
                        "value":"a"
                    }
                }
            },
            {
                "term":{
                    "arr":{
                        "value":"b"
                    }
                }
            }
        ],
        "minimum_should_match": 2
    }
},

我只想得到['a','b'],但也想得到['a','b','c']。
我在Google上搜索了很多,但找不到解决此问题的方法。
Elasticsearch有这种能力吗?

最佳答案

这应该可以,但是如果您要查找更复杂的数据,则性能可能会很低。

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "arr": {
              "value": "a"
            }
          }
        },
        {
          "term": {
            "arr": {
              "value": "b"
            }
          }
        },
        {
          "script": {
            "script": "doc['arr'].length == 2"
          }
        }
      ]
    }
  }
}

07-25 22:02
查看更多