Поисковая часть раздела подходит к концу. Соберём в один список ошибки, на которых спотыкаются почти все, кто начинает с Elasticsearch. Каждую мы уже встречали в уроках, а здесь они вместе, с симптомом и лечением.
Ошибки маппинга
1. text там, где нужен keyword, и наоборот. Симптом: фильтр по кухне ничего не находит, агрегация по названию падает с ошибкой про fielddata, term по text пуст. Лечение: точные значения (статусы, теги, коды, _id из основной базы) в keyword, тексты для поиска в text, а когда нужно и то и другое, мультиполе. Урок 7.
2. Динамический маппинг на рабочем индексе. Симптом: тег стал text с подполем keyword, цена в одном документе пришла строкой и индекс навсегда решил, что цена это текст. Лечение: явный маппинг при создании индекса, а для неожиданных полей "dynamic": "strict" или false. Урок 4.
3. Взрыв маппинга. Самая коварная ошибка. Разработчик складывает в документ объект, где ключи придумывают пользователи: пожелания к заказу, атрибуты товаров, заголовки HTTP. Каждый новый ключ при динамическом маппинге становится новым полем, у текста ещё и с подполем. Полей становятся тысячи, маппинг раздувается, память кластера уходит на его хранение, а при 1000 полей (index.mapping.total_fields.limit) запись начинает падать. Это называют взрывом маппинга. Лечение: произвольные ключи хранить не объектом, а массивом пар [{ "key": ..., "value": ... }] с типом nested, или полем типа flattened, которое индексирует весь объект как одно поле.
урок из курса
Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.