如何在多个布尔查询的ElasticSearch中生成查询

lkaoscv7  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(378)

我想在带有spring框架的elasticsearch中动态生成多个布尔运算的查询。
我在elasticsearch中的数据

{
   "masterID" : "<id>"
   "processedData": [
                {
                    "string_value": "22",
                    "key": "a"
                },
                {
                    "string_value": "abc",
                    "key": "s"
                },
                {
                    "string_value": "xyz",
                    "key": "n"
                }
            ]
}

我想对这个布尔运算((n=xyz)&&(s=))执行查询

mhd8tkvw

mhd8tkvw1#

为了能够查询数组内部对象,您应该将processeddataMap为嵌套类型,对象数组不能按预期工作,因为您无法独立于数组中的其他对象来查询每个对象。如果需要这样做,那么应该使用嵌套数据类型而不是对象数据类型。更改Map后,可以使用bool查询进行嵌套查询,如下所示:

{
  "query": {
    "nested": {
      "path": "processedData",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "key": "n"
              }
            },
            {
              "match": {
                "string_value": "xyz"
              }
            }
          ]
        }
      }
    }
  }
}

欲了解更多信息,请点击此处:https://www.elastic.co/guide/en/elasticsearch/reference/master/array.html

相关问题