Kibana Bargraph неправильно фильтрует данные

Я вставил следующий набор данных в индекс «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
            }
          }
        }
      }
    }
  }
}

Когда я создаю визуализацию гистограммы в Kibana, выбирая ось X как:

Aggregation : Terms
Filed : Tags.Tag.keyword

График строится корректно. Когда я фильтрую, выбирая Tag : Development, я получаю два столбца: один фильтрует "Развитие", а другой - "Телеком" (как видно на скриншоте) введите здесь описание изображения

Как построить график, чтобы при фильтрации любого тега я получал только данные этого тега?


person sanjeev kumar    schedule 02.06.2020    source источник


Ответы (1)


Это может быть связано с тем, что в этом документе вы храните Список строк в поле Теги.Тег. Если это так, то elasticsearch работает правильно.

Вам нужно понять, как работает агрегация elasticsearch. Предположим, вы вставили ниже json в elasticsearch

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

и в вашей визуализации вы нажали на термин abc.

Таким образом, elasticsearch на бэкэнде выполнит запрос и попытается агрегировать все термины, присутствующие во всех документах, в которых «abc» присутствует в поле «Tags.Tag.keyword».

Таким образом, в вашем случае документ, который имеет временную разработку, может также иметь значение телекоммуникации, и поэтому он показывает это вам.

person gaurav9620    schedule 02.06.2020
comment
это то, что я пытался выделить, но что именно может быть решением? - person sanjeev kumar; 02.06.2020
comment
Вы не можете этого сделать. Это. как работает elasticsearch внутри. Это поисковая система, ориентированная на документы, и выдает результаты на основе документа, теперь, если вы добавили список, он покажет все элементы списка в визуализации. Максимум, что вы можете сделать, это вручную исключить термины, которые вы не хотите видеть в визуализации. Вот ссылка на то же самое. elastic.co/ руководство/en/elasticsearch/reference/current/ - person gaurav9620; 03.06.2020