Документоориентированная структура - ElasticSearch

Page / - Изменено Alexandr Fokin в 2022/08/12 17:38

ElasticSearch

Изменено Alexandr Fokin

в 2022/08/12 17:38

Оглавление

ElasticSearch

NoSql база данных для хранения документов. Одно из основных функций - возможность выполнения полнотекстового поиска по документа.
В качестве интерфейса взаимодействия выступает HTTP Api.
Написан на Java, на основе библиотеки Lucene.

Структурные элементы

Индекс | Index	Содержит группу Типов. Упрощенно аналог БД.
Тип | Type	Содержит группу Документов и метаданные Маппинг. Упрощенно - аналог таблицы. Предполагает группировку документов с единой структурой.
Маппинг | Mapping	Содержащий информацию о структуре всех документов внутри Типа. Для каждого поля в документах типа определяется его тип данных, которые влияет на то, как поле будет использоваться с точки зрения поиска. При этом пытаясь автоматически определить тип данных. В случае добавления нового документа с полем, сведений о котором нет в маппинге, метаданные о поле автоматически заносяться в маппинг. Добавление документа, содержащего поле с типом данных, отличным от метаданных в маппинге, приведет к ошибке.
Документ	Принадлежит 1 группе. Уникально определяется совокупностью идентификаторов <IndexName>.<TypeName>.<DocumentId>. Имеет номер версии, которая автоматически инкрементируется при обновлении документа. DocumentId может генерироваться как клиентом, так и сервером.
Операция добавления (индексирования) документа.	При добавлении для документа определяется шард для размещения. Сначала документ отправляется на Master экземпляр шарда, а от него также распространяется на Slave копии шарда.
Операция поиска.	Может осуществляться как в рамках одного конкретного Типа, так и на уровне Типов, расположенных в различных Индексах.
Механизм масштабирования и отказоустойчивости.	Несколько узлов объединяются в кластер. Клиентские приложения могут взаимодействовать с любой из нод кластера. Поддерживается шардинг - разбиение данных на блоки и распределение их по узлам кластера. Для каждого шарда можно назначать кол-во реплик, копий. При этом среди репликаций один шард будем master, а остальные slave. Рекомендуется наличие быстрого и надежного сетевого соединения между узлами кластера. (split brain дописать позже). Параметры кол-ва шардов и реплик определяются на уровне Индекса. Кол-во реплик можно менять в рантайм, а кол-во шардов нельзя. 1 экземпляр шарда ElasticSearch соответствует 1 экземпляру индекса Apache Lucene.
Индекса Apache Lucene	Содержит оригинальные документы и (Term dictionary maps). Term dictionary maps - содержит информацию о всех уникальных словах-терминах, номерах документов, в которых они расположены, а также кол-во повторений для каждого документа.

Ссылки:

The heart of the free and open Elastic Stack
https://www.elastic.co/elasticsearch/

Elasticsearch для .NET - разработчиков
https://www.youtube.com/watch?v=iQ-Cmn6hgJg

Основы Elasticsearch
https://habr.com/ru/post/280488/

miollek/Free-Elasticsearch-Books
https://github.com/miollek/Free-Elasticsearch-Books