elasticsearch&我如何搜索确切的数组元素

时间:2019-10-29 13:21:43

标签: elasticsearch

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

{"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是否有能力做到这一点?

1 个答案:

答案 0 :(得分:1)

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

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