匹配对象数组字段包含可能在不同记录上的匹配的记录

问题描述 投票:0回答:1

假设我有一个数组字段,可能如下所示:

{
  "tags": [
    { "type": "A", "name": "something" },
    { "type": "B", "name": "whatever" }
  ]
}

有没有办法查询带有某个标签的记录

  • 类型:B
  • 和名字:某事

这样我们就可以匹配是否匹配 1 个标签记录或 2 个

elasticsearch kibana
1个回答
0
投票

Tldr;

我相信使用默认映射这是elasticsearch 的行为。 如果这不起作用,您能否分享索引的映射?您很可能正在使用

nested

演示

以下请求允许我搜索并获取文档 1

PUT /79250167/_doc/1
{
  "tags": [
    { "type": "A", "name": "something" },
    { "type": "B", "name": "whatever" }
  ]
}


GET 79250167/_search
{
  "query":{
    "bool": {
      "should": [
        {
          "match": {
            "tags.type.keyword": "B"
          }
        },
        {
          "match":{
            "tags.name.keyword": "something"
          }
        }
      ]
    }
  }
}

应该给你文件。

© www.soinside.com 2019 - 2024. All rights reserved.