Представьте индекс как коллекцию записей, документ как одну JSON-запись, а mapping как правила интерпретации её полей.
Начнём с одного товара
{"name":"Blue shoes",
Представьте индекс как коллекцию записей, документ как одну JSON-запись, а mapping как правила интерпретации её полей.
{"name":"Blue shoes",
Этот документ принадлежит индексу products. Его mapping может объявить name поисковым текстом, price числом, а created_at датой.
Предположим, нужны товары дешевле 200. Числовой price позволяет Elasticsearch сравнивать числа. Строковое представление служит другим сравнениям и плохо заменяет запросы числовых диапазонов.
Поэтому тем же входным данным нужен mapping, выбранный под нужные поисковые запросы. Один JSON не описывает всё поведение индексирования.
Динамический mapping автоматически выводит поля при поступлении данных. Это удобно при исследовании, но неожиданное раннее значение может установить неподходящий тип. Явно объявляйте известные поля production и контролируйте произвольные новые имена.
Добавление поля отличается от изменения типа существующего. Последнее обычно требует нового индекса и копирования документов в него через reindexing.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать