После перехода на ELK 5.0 стало невозможно фильтровать, сортировать данные по многим полям. Выдавалась следующая ошибка:
Discover: Fielddata is disabled on text fields by default. Set fielddata=true on [host] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.
Это связано с тем, что теперь все текстовые поля находятся в режиме: fielddata=false
Подробнее можно почитать тут.
Что бы вернуть обратно такую способность, нужно добавить параметр fielddata=true в нужные поля.
Это можно сделать прямо из интерфейса Kibana, благо теперь появился так инструмент, как Dev Tools.
Для этого выполним такой запрос:
PUT _mapping/logstash
{
"properties": {
"host": {
"type": "text",
"fielddata": true
}
}
}
Этот запрос добавит параметр «fielddata»: true в поле «host» в индекс logstash.
Запрос может вернуть ошибку, если такое поле есть еще в каком-то индексе:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Mapper for [type] conflicts with existing mapping in other types:\n[mapper [type] is used by multiple types. Set update_all_types to true to update [fielddata] across all types.]"
}
],
"type": "illegal_argument_exception",
"reason": "Mapper for [type] conflicts with existing mapping in other types:\n[mapper [type] is used by multiple types. Set update_all_types to true to update [fielddata] across all types.]"
},
"status": 400
}
Что бы применить запрос ко всем индексам нужно добавить такую конструкцию к нему: «?update_all_types»
PUT _mapping/logstash?update_all_types
.....