Исходный код вики ElasticSearch
Версия 5.4 от Alexandr Fokin на 2022/08/13 17:11
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | ==== ElasticSearch ==== | ||
2 | |||
3 | NoSql база данных для хранения документов. Одно из основных функций - возможность выполнения полнотекстового поиска по документа. | ||
4 | В качестве интерфейса взаимодействия выступает HTTP Api. | ||
5 | Написан на [[Java>>Разработка.JVM.Java.WebHome]], на основе библиотеки [[Apache Lucene>>Разработка.JVM.Java.Библиотеки.Apache Lucene.WebHome]]. | ||
6 | |||
7 | ---- | ||
8 | |||
9 | ==== Структурные элементы ==== | ||
10 | |||
11 | |(% style="width:364px" %) |(% style="width:1158px" %) | ||
12 | |(% style="width:364px" %)Индекс ~| Index|(% style="width:1158px" %)Содержит группу Типов. | ||
13 | Упрощенно аналог БД. | ||
14 | |(% style="width:364px" %)Тип ~| Type|(% style="width:1158px" %)((( | ||
15 | Содержит группу Документов и метаданные Маппинг. | ||
16 | Упрощенно - аналог таблицы. | ||
17 | |||
18 | Предполагает группировку документов с единой структурой. | ||
19 | ))) | ||
20 | |(% style="width:364px" %)Маппинг ~| Mapping|(% style="width:1158px" %)((( | ||
21 | Содержащий информацию о структуре всех документов внутри Типа. | ||
22 | Для каждого поля в документах типа определяется его тип данных, которые влияет на то, как поле будет использоваться с точки зрения поиска. При этом пытаясь автоматически определить тип данных. | ||
23 | |||
24 | В случае добавления нового документа с полем, сведений о котором нет в маппинге, метаданные о поле автоматически заносяться в маппинг. | ||
25 | Добавление документа, содержащего поле с типом данных, отличным от метаданных в маппинге, приведет к ошибке. | ||
26 | ))) | ||
27 | |(% style="width:364px" %)Документ|(% style="width:1158px" %)((( | ||
28 | Принадлежит 1 группе. | ||
29 | Уникально определяется совокупностью идентификаторов <IndexName>.<TypeName>.<DocumentId>. | ||
30 | Имеет номер версии, которая автоматически инкрементируется при обновлении документа. | ||
31 | DocumentId может генерироваться как клиентом, так и сервером. | ||
32 | ))) | ||
33 | |(% style="width:364px" %) |(% style="width:1158px" %) | ||
34 | |(% style="width:364px" %)Операция добавления (индексирования) документа.|(% style="width:1158px" %)((( | ||
35 | При добавлении для документа определяется шард для размещения. Сначала документ отправляется на Master экземпляр шарда, а от него также распространяется на Slave копии шарда. | ||
36 | |||
37 | После завершения запроса на добавления документа, его содержимое может быть не доступно для поиска т.к. индексация новых документов выполняется сервером ElasticSearch периодически, через заданный промежуток времени (частота задается через параметр Индекса). | ||
38 | ))) | ||
39 | |(% style="width:364px" %)Операция поиска.|(% style="width:1158px" %)Может осуществляться как в рамках одного конкретного Типа, так и на уровне Типов, расположенных в различных Индексах. | ||
40 | |(% style="width:364px" %) |(% style="width:1158px" %) | ||
41 | |(% style="width:364px" %)Механизм масштабирования и отказоустойчивости.|(% style="width:1158px" %)((( | ||
42 | Несколько узлов объединяются в кластер. Клиентские приложения могут взаимодействовать с любой из нод кластера. | ||
43 | Поддерживается шардинг - разбиение данных на блоки и распределение их по узлам кластера. | ||
44 | Для каждого шарда можно назначать кол-во реплик, копий. При этом среди репликаций один шард будем master, а остальные slave. | ||
45 | |||
46 | Рекомендуется наличие быстрого и надежного сетевого соединения между узлами кластера. (split brain дописать позже). | ||
47 | |||
48 | Параметры кол-ва шардов и реплик определяются на уровне Индекса. Кол-во реплик можно менять в рантайм, а кол-во шардов нельзя. | ||
49 | 1 экземпляр шарда ElasticSearch соответствует 1 экземпляру индекса Apache Lucene. | ||
50 | ))) | ||
51 | |(% style="width:364px" %)Индекса Apache Lucene|(% style="width:1158px" %)Содержит оригинальные документы и (Term dictionary maps). | ||
52 | Term dictionary maps - содержит информацию о всех уникальных словах-терминах, номерах документов, в которых они расположены, а также кол-во повторений для каждого документа. | ||
53 | |||
54 | ---- | ||
55 | |||
56 | ==== Ссылки: ==== | ||
57 | |||
58 | The heart of the free and open Elastic Stack | ||
59 | https://www.elastic.co/elasticsearch/ | ||
60 | |||
61 | Elasticsearch для .NET - разработчиков | ||
62 | https://www.youtube.com/watch?v=iQ-Cmn6hgJg | ||
63 | |||
64 | |||
65 | Основы Elasticsearch | ||
66 | https://habr.com/ru/post/280488/ | ||
67 | |||
68 | |||
69 | miollek/Free-Elasticsearch-Books | ||
70 | https://github.com/miollek/Free-Elasticsearch-Books | ||
71 |