ElasticSearch中对象数组的条件

z18hc3ub  于 2022-12-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(119)

对于ES来说还是个新手,所以如果这是显而易见的,请表示歉意。

{..., 'objectArray': [{'a': 3, 'b': 2}, {'a': 0, 'b': 4}]}

其中objectArray属性是一个对象数组。如何在该索引中查询在objectArray中包含a = 3和b = 4的对象的文档?因此,上述文档不会出现在结果集中,但

{..., 'objectArray': [{'a': 3, 'b': 2}, {'a': 3, 'b': 4}]}

将会是
如果您能在NEST中显示一个示例,或者只是说明查询类型,以便我可以阅读它,那将是非常棒的,非常感谢

mwngjboj

mwngjboj1#

假设我们讨论的是nested类型的属性,我们使用nested query
Map

PUT idx_nested
{
  "mappings": {
    "properties": {
      "objectArray":{
        "type": "nested"
      }
    }
  }
}

文件

POST idx_nested/_doc
{
  "objectArray": [
    {
      "a": 3,
      "b": 2
    },
    {
      "a": 0,
      "b": 4
    }
  ]
}

POST idx_nested/_doc
{
  "objectArray": [
    {
      "a": 3,
      "b": 2
    },
    {
      "a": 3,
      "b": 4
    }
  ]
}

查询

GET idx_nested/_search
{
  "query": {
    "nested": {
      "path": "objectArray",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "objectArray.a": {
                  "value": 3
                }
              }
            },
            {
              "term": {
                "objectArray.b": {
                  "value": 4
                }
              }
            }
          ]
        }
      }
    }
  }
}

回应:

"hits": [
  {
    "_index": "idx_nested",
    "_id": "4j5VxoQBiZR2Tvxo_zXz",
    "_score": 2,
    "_source": {
      "objectArray": [
        {
          "a": 3,
          "b": 2
        },
        {
          "a": 3,
          "b": 4
        }
      ]
    }
  }
]

相关问题