Как найти поля с конфликтами сопоставления

Мои настройки индекса в Kibana говорят мне, что у меня есть поля с конфликтами сопоставления в моих шаблонах индекса logstash-*.

Какой самый простой способ узнать, какие поля имеют конфликтующее отображение и / или по каким показателям возникает конфликт?

6 ответов

Решение

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

Начиная как минимум с Kibana 5.2, вы можете ввести "конфликт" в поле "Фильтр", чтобы отфильтровать все поля до тех, которые имеют конфликт. Справа находится столбец с именем "control", и для каждого поля есть кнопка со значком карандаша. Нажав на это, вы узнаете, какие индексы имеют какое отображение.

Поля отфильтрованы только для тех, у которых есть конфликты: поля фильтруются только с конфликтами

Индексы, в которых конфликтует отображение поля: индексы, в которых конфликты полевых карт

Вы можете легко узнать, как отображаются поля, используя API сопоставления в Kibana.

Если вы знаете, что у вас есть конфликт сопоставления, я предполагаю, что вы знаете имя поля, в котором возник конфликт. Они будут перечислены в разделе Management/Index Patterns/index_pattern.

Если у вас есть индексы, которые создаются ежедневно, например production-2020.06.16, вы можете выполнять поиск по всем индексам с помощью production*.

Перейдите в Инструменты разработчика и введите этот запрос, изменив шаблон индекса (production*) и ConflictedFieldname в соответствии с вашими потребностями.

GET production*/_mapping/field/conflictedFieldname

При этом будут извлечены все индексы, соответствующие шаблону production *, и будет отображено сопоставление для конфликтующего имени поля для каждого индекса. Прокрутите список и посмотрите, какой из них не похож на другой.

Вы также можете ознакомиться с документацией Elasticsearch здесь: Документация Elasticsearch: Получить API сопоставления полей

Причина конфликта заключается в том, что первое значение, которое входит в индекс, используется Elasticsearch, чтобы наилучшим образом угадать, какой тип данных должен быть. Вы можете убедиться, что это всегда один и тот же тип, разместив шаблон для интересующего вас шаблона индекса.

Документация Elasticsearch: шаблон индексации

В Elasticsearch 5.5.2 вы можете щелкнуть раскрывающийся список справа от поля поиска "Фильтр" и выбрать "конфликт". Это на странице шаблонов индексов.

Должно быть легко определить их в списке полей при определении шаблона. Что-то вроде этого:

Если щелкнуть столбец типа на странице шаблонов индекса, где отображается предупреждение, индексы следует отсортировать по типу. Конфликтующие поля будут иметь тип «конфликт».

Другие вопросы по тегам