布尔过滤器不只显示弹性搜索中的过滤数据

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

我有一个索引“ tag_nested”,其中包含以下类型的数据:

{
    "jobid": 1,
    "table_name": "table_A",
    "Tags": [
      {
        "TagType": "WorkType",
        "Tag": "ETL"
      },
      {
        "TagType": "Subject Area",
        "Tag": "Telecom"
      }
    ]
}

当我触发查询以通过触发以下查询来过滤“ Tag”和“ TagType”上的数据时:

POST /tag_nested/_search
{
    "query": {
        "bool": {
            "must": {"match_all": {}},
            "filter": [
                {"term": {
                    "Tags.Tag.keyword": "ETL"
                }},
                 {"term": {
                    "Tags.TagType.keyword": "WorkType"
                }}
            ]
        }
    }
}

它给了我以下输出。我面临的问题是,上面的查询过滤了没有过滤数据的文档,但是它显示了该文档的所有“标签”,而不仅仅是过滤了一个]

{
        "_index" : "tag_nested",
        "_type" : "_doc",
        "_id" : "9",
        "_score" : 1.0,
        "_source" : {
          "jobid" : 1,
          "table_name" : "table_A",
          "Tags" : [
            {
              "TagType" : "WorkType",
              "Tag" : "ETL"
            },
            {
              "TagType" : "Subject Area",
              "Tag" : "Telecom"
            }
          ]
        }
      }

而不是上面的结果,我希望我的输出像:

{
        "_index" : "tag_nested",
        "_type" : "_doc",
        "_id" : "9",
        "_score" : 1.0,
        "_source" : {
          "jobid" : 1,
          "table_name" : "table_A",
          "Tags" : [
            {
              "TagType" : "WorkType",
              "Tag" : "ETL"
            }
          ]
        }
      }
elasticsearch lucene amazon-elastic-beanstalk elastic-stack elk
1个回答
0
投票

已经回答hereherehere

TL; DR,您需要将Tags字段设置为nested类型,重新同步索引并使用inner_hits仅获取适用的标签组。

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