Индекс | IndexСодержит группу Типов.
Упрощенно аналог БД.
Тип | Type

Содержит группу Документов и метаданные Маппинг.
Упрощенно - аналог таблицы.

Предполагает группировку документов с единой структурой.

Маппинг | Mapping

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

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

Если Маппинг дополняется, то это не затрагивает уже проиндексированные документы, а касается, только тех, которые будут добавлены после.

Не рекомендуется иметь несколько Типов в едином Индексе, у которых в Маппинге имеются поля с одинаковыми названиями, но разными типами данных.

Документ

Принадлежит 1 типу.
Уникально определяется совокупностью идентификаторов <IndexName>.<TypeName>.<DocumentId>.

Поля:

  
IdDocumentId может генерироваться как клиентом, так и сервером.
_sourceОригинальный загруженный документ
_allКонкатенация всех свойств документа (используется, если при поиске не указаны конкретные поля)
(через Маппинг можно явно исключить определенные поля документа)
_timestampВременная отметка
_ttlВременная задержка, после которой документ будет автоматически удален
_versionВерсия документа для механизма Оптимистичная блокировка.
  
  
Операция добавления (индексирования) документа.

При добавлении для документа определяется шард для размещения. Сначала документ отправляется на Master экземпляр шарда, а от него также распространяется на Slave реплики шарда.

После завершения запроса на добавления документа, его содержимое может быть не доступно для поиска т.к. индексация новых документов выполняется сервером ElasticSearch периодически, через заданный промежуток времени (частота задается через параметр Индекса).

Операция обновления документа.
Загрузка новой версии документа, полностью затирая предыдущий.
Upsert обновить или создать, если не существует.
Обновление существующего документа с использованием констант.
 

Можно использовать поле _version для обработки параллелизма.

  

 

Теги: