Исходный код вики ElasticSearch

Версия 4.30 от Alexandr Fokin на 2022/08/12 17:38

Последние авторы
1 ==== ElasticSearch ====
2
3 NoSql база данных для хранения документов. Одно из основных функций - возможность выполнения полнотекстового поиска по документа.
4 В качестве интерфейса взаимодействия выступает HTTP Api.
5 Написан на [[Java>>Разработка.JVM.Java.WebHome]], на основе библиотеки [[Lucene>>Разработка.NET.Библиотеки.Внешняя обработка.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" %)При добавлении для документа определяется шард для размещения. Сначала документ отправляется на Master экземпляр шарда, а от него также распространяется на Slave копии шарда.
35 |(% style="width:364px" %)Операция поиска.|(% style="width:1158px" %)Может осуществляться как в рамках одного конкретного Типа, так и на уровне Типов, расположенных в различных Индексах.
36 |(% style="width:364px" %) |(% style="width:1158px" %)
37 |(% style="width:364px" %)Механизм масштабирования и отказоустойчивости.|(% style="width:1158px" %)(((
38 Несколько узлов объединяются в кластер. Клиентские приложения могут взаимодействовать с любой из нод кластера.
39 Поддерживается шардинг - разбиение данных на блоки и распределение их по узлам кластера.
40 Для каждого шарда можно назначать кол-во реплик, копий. При этом среди репликаций один шард будем master, а остальные slave.
41
42 Рекомендуется наличие быстрого и надежного сетевого соединения между узлами кластера. (split brain дописать позже).
43
44 Параметры кол-ва шардов и реплик определяются на уровне Индекса. Кол-во реплик можно менять в рантайм, а кол-во шардов нельзя.
45 1 экземпляр шарда ElasticSearch соответствует 1 экземпляру индекса Apache Lucene.
46 )))
47 |(% style="width:364px" %)Индекса Apache Lucene|(% style="width:1158px" %)Содержит оригинальные документы и (Term dictionary maps).
48 Term dictionary maps - содержит информацию о всех уникальных словах-терминах, номерах документов, в которых они расположены, а также кол-во повторений для каждого документа.
49
50 ----
51
52 ==== Ссылки: ====
53
54 The heart of the free and open Elastic Stack
55 https://www.elastic.co/elasticsearch/
56
57 Elasticsearch для .NET - разработчиков
58 https://www.youtube.com/watch?v=iQ-Cmn6hgJg
59
60
61 Основы Elasticsearch
62 https://habr.com/ru/post/280488/
63
64
65 miollek/Free-Elasticsearch-Books
66 https://github.com/miollek/Free-Elasticsearch-Books
67