Почему в Elasticsearch как бэкенде Logstash у всех полей строковый тип?
Здравствуйте.
Внедряем ELK-стек в инфраструктуру, пилотный запуск решили делать на access-логах nginx. Всё установили, настроили сбор, но как дело дошло до аналитики, оказалось, что нельзя делать никакие арифметические аггрегации в Kibana, после недолгого разбирательства оказалось, что все поля в ES имеют type: string и из-за этого нельзя сделать Sum или Avg.
Я специально пролистал кучу туториалов по установке ELK, но нигде явным образом маппинги не прописываются, из чего я могу сделать вывод, что у людей правильные типы есть "из коробки".
Вопрос: что мы сделали не так и как эту ситуацию можно исправить, не теряя уже собранные данные?
Маппинг генерируется динамически, но его можно установить / до установить вручную.
Logstash отправляет строку в ES, ES принял это за исходную и создал маппинг на этом поле, как строчное.
Собсно все. Передайте в индекс новые произвольные данные булевого типа, целого и с плавающей точкой, маппинг для них создастся с типами, которые вы передали.
Вообще говоря тяжело угадывать, что вы могли сделать не так, не видя конфиг logstash и текущий маппинг ES, телепаты в отпуске))
Проще всего проверить, что передает logstash на вывод. Если тип данных правильный в json, который идет на вход ES. Тогда обновите маппинг ES. Как вариант - можете пересоздать индекс.