Основы

Основы


Основные понятия Elasticsearch


Elasticsearch — высоко масштабируемая поисковая система с открытым исходным кодом. Хотя он начинался как текстовая поисковая система, сейчас он развивается как аналитический механизм, который может предоставить не только поиск, но и сложные агрегации. Поддержка таких функций, как автозаполнение, фильтры на основе геолокации, многоуровневая агрегация, а также удобство использования привели к приятия в масштабах всей отрасли. При этом я считаю, чтобы хорошо выполнить работу, важно иметь правильный инструмент и уметь его выбрать. Для этого в конце этого урока мы обсудим сильные и слабые стороны Elasticsearch.

В этом разделе мы рассмотрим основные понятий и терминологию Elasticsearch. Начнем с основных моментов, вставка, обновление и поиск. Если вы знакомы с SQL, в таблицы ниже показаны эквивалентные термины в Elasticsearch.



Документ


В Elasticsearch данные хранятся в виде документов JSON (Javascript Object Notation). Большинство хранилищ данных NoSQL используют JSON для хранения своих данных, поскольку формат JSON очень лаконичный, гибкий и понятный людям. Документ в Elasticsearch очень похож на строку по сравнению с реляционной базой данных. Допустим, у нас есть таблица User со следующей информацией.




В Elasticsearch эта таблица будет выглядеть следующим образом:

{ "id": 1, "name": "Иван", "age": 14, "gender": "m", "email": "ivan@gmail.com" }, { "id": 2, "name": "Лена", "age": 20, "gender": "f", "email": "lena@gmail.com" } 


Кроме того Elasticsearch поддерживает хранение вложенных объектов:

{ "id": 2, "name": "Лена", "age": 20, "gender": "f", "email": "lena@gmail.com", "<strong>address</strong>": { "street": "123 High Lane", "city": "Big City", "state": "Small State", "zip": 12345 } } 

Elascticsearch построен для обработки неструктурированных данных и может автоматически определять типы данных полей документа. Вы можете индексировать новые документы или добавлять новые поля без изменения схемы. Этот процесс также известен как динамическое отображение. Подробности обсудим на 3 уроке.



Индекс


Индекс похож на базу данных. Термин индекс не следует путать с индексом базы данных, как можно предложить если вы знакомы с реляционными базами данных. Индекс подразумевает логическую группировку Типов (таблиц). Имя индекса должно быть уникальным и состоять из строчных букв.



Тип


Тип похож на таблицу базы данных, индекс может иметь один или несколько типов. Тип — это логическое разделение различных видов данных. Например, если вы создаете приложение для блога, можно предложить создать тип для статей и комментариев.


Например тип для статей:

{ "articleid": 1, "name": "Introduction to Elasticsearch" } 


Тип для комментариев:

{ "commentid": "AVmKvtPwWuEuqke_aRsm", "articleid": 1, "comment": "Its Awesome !!" } 



Кластер и узел


В традиционных базах данных обычно у нас есть только один сервер, обслуживающий все запросы. Elasticsearch — это распределенная система, что означает она состоит из одного или нескольких узлов, которые действуют как одно целое, что позволяет масштабировать и обрабатывать нагрузку, превышающую то, что может обработать один сервер. Каждый узел (сервер) имеет часть данных. Вы можете запустить Elasticsearch только с одним узлом, а затем добавить больше узлов или другими словами, масштабировать кластер, когда количество данных превышает возможности одного сервер.

На рисунке выше кластер имеет три узла с именами elasticsearch1, elasticsearch2, elasticsearch3. Эти три узла работают вместе, чтобы обрабатывать все запросы индексирования и извлечения данных. В зависимости от потребностей вашего приложения вы можете добавлять и удалять узлы (серверы) «на лету». Да и такая замечательная возможность есть в Elasticsearch мы обсудим это в следующих уроках.



Shard (осколок или шард)


Индекс представляет собой набор из одного или нескольких шардов. За счет чего Elasticsearch может хранить информацию объем которой превышает возможности одного сервера. Elasticsearch использует Apach Lucene для индексирования и обработки запросов. Шард — это не что иное, как экземпляр Apache Lucene. В следующих уроках мы обсудим почему именно Apache Lucene и как он используется в Elasticsearch.


Report Page