0

我在索引“testfilter”中插入了以下数据集

POST /_bulk
{"index":{"_index":"testfilter"}}
{ "jobid": 1, "table_name": "table_A", "Tags": [ { "TagType": "WorkTypeA", "Tag": "ETL" }, { "TagType": "Subject Area", "Tag": "Telecom" } ] }
{"index":{"_index":"testfilter"}}
{ "jobid": 2, "table_name": "table_B", "Tags": [ { "TagType": "WorkTypeB", "Tag": "Engineering" }, { "TagType": "Subject Area", "Tag": "Telecom" } ] }
{"index":{"_index":"testfilter"}}
{ "jobid": 3, "table_name": "table_C", "Tags": [ { "TagType": "WorkTypeC", "Tag": "Development" }, { "TagType": "Subject Area", "Tag": "Telecom" } ] }

并且索引映射( GET testfilter/_mapping )如下

{
  "testfilter" : {
    "mappings" : {
      "properties" : {
        "Tags" : {
          "properties" : {
            "Tag" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "TagType" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        },
        "jobid" : {
          "type" : "long"
        },
        "table_name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

当我通过选择 X Axis as 在 Kibana 中创建条形图可视化时:

Aggregation : Terms
Filed : Tags.Tag.keyword

该图得到正确构建。当我通过选择Tag : Development进行过滤时,我得到两个栏一个过滤“Development”和另一个过滤“Telecom”(如屏幕截图所示) 在此处输入图像描述

我如何构建图表,当我过滤任何标签时,我应该只获得该标签数据

4

1 回答 1

0

这可能是因为您将字符串列表存储在本文档的字段 Tags.Tag中。如果是这种情况,那么 elasticsearch 运行正常。

您需要了解 elasticsearch 聚合的工作原理。假设您已在 elasticsearch 中的 json 下面插入

{
  "Tags": {
    "tag": [
      "abc",
      "def"
    ]
  }
}

在您的可视化中,您单击了术语 abc。

因此,后端的 elasticsearch 将触发查询并尝试汇总所有文档中存在的所有术语,其中“abc”存在于“Tags.Tag.keyword”字段中。

因此,在您的情况下,具有术语开发的文档可能也包含价值电信,因此它向您展示了这一点。

于 2020-06-02T17:29:13.767 回答