Исходный код вики Компоненты
Редактировал(а) Alexandr Fokin 2023/12/16 14:11
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | |(% style="width:249px" %)Индекс ~| Index|(% style="width:1233px" %)Содержит группу Типов. | ||
2 | Упрощенно аналог БД. | ||
3 | |(% style="width:249px" %)Тип ~| Type|(% style="width:1233px" %)((( | ||
4 | Содержит группу Документов и метаданные Маппинг. | ||
5 | Упрощенно - аналог таблицы. | ||
6 | |||
7 | Предполагает группировку документов с единой структурой. | ||
8 | ))) | ||
9 | |(% style="width:249px" %)Маппинг ~| Mapping|(% style="width:1233px" %)((( | ||
10 | Содержащий информацию о структуре всех документов внутри Типа. | ||
11 | Для каждого поля в документах типа определяется его тип данных, которые влияет на то, как поле будет использоваться с точки зрения поиска. При этом пытаясь автоматически определить тип данных на основе содержимого. | ||
12 | |||
13 | В случае добавления нового документа с полем, сведений о котором нет в маппинге, метаданные о поле автоматически заносяться в маппинг. | ||
14 | Добавление документа, содержащего поле с типом данных, отличным от метаданных в маппинге, приведет к ошибке. | ||
15 | |||
16 | Если Маппинг дополняется, то это не затрагивает уже проиндексированные документы, а касается, только тех, которые будут добавлены после. | ||
17 | |||
18 | Не рекомендуется иметь несколько Типов в едином Индексе, у которых в Маппинге имеются поля с одинаковыми названиями, но разными типами данных. | ||
19 | ))) | ||
20 | |(% style="width:249px" %)Документ|(% style="width:1233px" %)((( | ||
21 | Принадлежит 1 типу. | ||
22 | Уникально определяется совокупностью идентификаторов <IndexName>.<TypeName>.<DocumentId>. | ||
23 | |||
24 | Поля: | ||
25 | |||
26 | | | | ||
27 | |Id|DocumentId может генерироваться как клиентом, так и сервером. | ||
28 | |_source|Оригинальный загруженный документ | ||
29 | |_all|Конкатенация всех свойств документа (используется, если при поиске не указаны конкретные поля) | ||
30 | (через Маппинг можно явно исключить определенные поля документа) | ||
31 | |_timestamp|Временная отметка | ||
32 | |_ttl|Временная задержка, после которой документ будет автоматически удален | ||
33 | |_version|Версия документа для механизма [[Оптимистичная блокировка>>doc:Архитектура и модели.Блокировки.Оптимистичная блокировка.WebHome]]. | ||
34 | | | | ||
35 | ))) | ||
36 | |(% style="width:249px" %) |(% style="width:1233px" %) | ||
37 | |(% style="width:249px" %)Операция добавления (индексирования) документа.|(% style="width:1233px" %)((( | ||
38 | При добавлении для документа определяется шард для размещения. Сначала документ отправляется на Master экземпляр шарда, а от него также распространяется на Slave реплики шарда. | ||
39 | |||
40 | После завершения запроса на добавления документа, его содержимое может быть не доступно для поиска т.к. индексация новых документов выполняется сервером ElasticSearch периодически, через заданный промежуток времени (частота задается через параметр Индекса). | ||
41 | ))) | ||
42 | |(% style="width:249px" %)Операция обновления документа.|(% style="width:1233px" %)((( | ||
43 | |Загрузка новой версии документа, полностью затирая предыдущий. | ||
44 | |Upsert обновить или создать, если не существует. | ||
45 | |Обновление существующего документа с использованием констант. | ||
46 | | | ||
47 | |||
48 | Можно использовать поле _version для обработки параллелизма. | ||
49 | ))) | ||
50 | |(% style="width:249px" %) |(% style="width:1233px" %) | ||
51 | |||
52 |