Elasticsearch - Основные понятия
Elasticsearch - это поисковый сервер на базе Apache Lucene. Он был разработан Шэем Бэноном и опубликован в 2010 году. В настоящее время его поддерживает Elasticsearch BV. Его последняя версия - 7.0.0.
Elasticsearch - это распределенная система полнотекстового поиска и аналитики с открытым исходным кодом в реальном времени. Он доступен из интерфейса веб-службы RESTful и использует документы JSON без схемы (JavaScript Object Notation) для хранения данных. Он построен на языке программирования Java, поэтому Elasticsearch может работать на разных платформах. Это позволяет пользователям исследовать очень большие объемы данных с очень высокой скоростью.
Общие особенности
Общие особенности Elasticsearch следующие:
Elasticsearch масштабируется до петабайт структурированных и неструктурированных данных.
Elasticsearch можно использовать в качестве замены хранилищ документов, таких как MongoDB и RavenDB.
Elasticsearch использует денормализацию для повышения производительности поиска.
Elasticsearch - одна из популярных поисковых систем для предприятий, которая в настоящее время используется многими крупными организациями, такими как Wikipedia, The Guardian, StackOverflow, GitHub и т. Д.
Elasticsearch - это открытый исходный код, доступный по лицензии Apache версии 2.0.
Ключевые понятия
Ключевые концепции Elasticsearch следующие:
Узел
Это относится к одному запущенному экземпляру Elasticsearch. Один физический и виртуальный сервер вмещает несколько узлов в зависимости от возможностей их физических ресурсов, таких как ОЗУ, хранилище и вычислительная мощность.
Кластер
Это набор из одного или нескольких узлов. Кластер предоставляет возможности коллективного индексирования и поиска по всем узлам для всех данных.
Индекс
Это собрание документов разного типа и их свойств. В Index также используется концепция осколков для повышения производительности. Например, набор документов содержит данные приложения социальной сети.
Документ
Это набор полей, определенным определенным образом в формате JSON. Каждый документ принадлежит к типу и находится внутри индекса. Каждый документ связан с уникальным идентификатором, называемым UID.
Осколок
Индексы по горизонтали разделены на сегменты. Это означает, что каждый сегмент содержит все свойства документа, но содержит меньше объектов JSON, чем индекс. Горизонтальное разделение делает шард независимым узлом, который можно хранить в любом узле. Первичный осколок - это исходная горизонтальная часть индекса, а затем эти первичные осколки реплицируются в реплики.
Реплики
Elasticsearch позволяет пользователю создавать реплики своих индексов и шардов. Репликация не только помогает повысить доступность данных в случае сбоя, но также повышает производительность поиска за счет выполнения операции параллельного поиска в этих репликах.
Преимущества
Elasticsearch разработан на Java, что делает его совместимым практически с любой платформой.
Elasticsearch работает в реальном времени, другими словами, через одну секунду добавленный документ становится доступным для поиска в этом движке.
Elasticsearch распространяется, что позволяет легко масштабировать и интегрировать его в любую крупную организацию.
Создавать полные резервные копии легко с помощью концепции шлюза, которая присутствует в Elasticsearch.
Обработка мультитенантности в Elasticsearch очень проста по сравнению с Apache Solr.
Elasticsearch использует объекты JSON в качестве ответов, что позволяет вызывать сервер Elasticsearch с большим количеством разных языков программирования.
Elasticsearch поддерживает почти все типы документов, кроме тех, которые не поддерживают отрисовку текста.
Недостатки
Elasticsearch не имеет многоязычной поддержки с точки зрения обработки данных запросов и ответов (возможно только в JSON), в отличие от Apache Solr, где это возможно в форматах CSV, XML и JSON.
Иногда у Elasticsearch возникает проблема с разделением мозга.
Сравнение Elasticsearch и СУБД
В Elasticsearch индекс аналогичен таблицам в СУБД (Система управления реляционными базами данных). Каждая таблица представляет собой набор строк, так же как каждый индекс - это набор документов в Elasticsearch.
В следующей таблице приводится прямое сравнение этих терминов:
Elasticsearch | СУБД |
---|---|
Кластер | База данных |
Осколок | Осколок |
Индекс | Стол |
Поле | Столбец |
Документ | Строка |