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

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

ElasticSearch 
Изменено Alexandr Fokin
в 2022/08/12 17:09

Оглавление

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

Структурные элементы
 	 	
Индекс | Index	Содержит группу Типов.
Упрощенно аналог БД.	
Тип | Type	Содержит группу Документов и метаданные Маппинг.
Упрощенно - аналог таблицы.
Предполагает группировку документов с единой структурой.	
Маппинг | Mapping	Содержащий информацию о структуре всех документов внутри Типа.
Для каждого поля в документах типа определяется его тип данных, которые влияет на то, как поле будет использоваться с точки зрения поиска. При этом пытаясь автоматически определить тип данных.
В случае добавления нового документа с полем, сведений о котором нет в маппинге, метаданные о поле автоматически заносяться в маппинг.
Добавление документа, содержащего поле с типом данных, отличным от метаданных в маппинге, приведет к ошибке.	
Документ	Принадлежит 1 группе.
Уникально определяется совокупностью идентификаторов <IndexName>.<TypeName>.<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