English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Введение в Elasticsearch

Elasticsearch является поисковым сервером, основанным на Apache Lucene. Он был разработан Шаем Бانونом и опубликован в 2010 году. В настоящее время он поддерживается компанией Elasticsearch BV. Его последняя версия - 7.0.0.

Elasticsearch является реальным распределенным открытым исходным кодом полнотекстовым поисковым и аналитическим двигателем. Его можно получить через интерфейс RESTful Web-сервиса и использовать для хранения данных с помощью не模式和 JSON (JavaScript Object Notation). Он построен на основе языков программирования Java и поэтому Elasticsearch может работать на различных платформах. Он позволяет пользователям быстро просматривать的大量 данных.

Характеристики

Общие характеристики Elasticsearch такие как -

  • Elasticsearch может масштабироваться до уровня PB для структурированных и неструктурированных данных.

  • Elasticsearch может заменить MongoDB и RavenDB в качестве системы хранения документов.

  • Elasticsearch использует денормализацию для повышения производительности поиска.

  • Elasticsearch является одним из популярных корпоративных поисковых систем, которую в настоящее время используют такие крупные организации, как Wikipedia, The Guardian, StackOverflow, GitHub и многие другие.

  • Elasticsearch является открытым исходным кодом и может быть использован под лицензией Apache License Version 2.0.

Ключевые концепции

Ключевые концепции Elasticsearch таковы -

Узел

Это指的是 единственный рабочий экземпляр Elasticsearch. Один физический и виртуальный сервер могут容纳 несколько узлов, в зависимости от их физических ресурсов (например, ОЗУ, хранение и производительность).

Кластер

Это набор одного или нескольких узлов. Кластер предоставляет коллективные функции индексации и поиска для всех данных на всех узлах.

Индекс

Это набор документов различных типов и их свойств. Индекс также использует концепцию фрагментов для повышения производительности. Например, набор документов может содержать данные из социальной сети.

Документ

Это набор полей, определенный в определенном формате JSON. Каждый документ принадлежит к одному типу и находится в индексе. Каждый документ связан с уникальным идентификатором, называемым UID.

Фрагмент

Индекс разбивается на фрагменты в горизонтальном направлении. Это означает, что каждый фрагмент содержит все свойства документа, но количество содержащихся в нем JSON-объектов меньше, чем в индексе. Горизонтальное разделение делает фрагмент независимым узлом, который можно хранить на любом узле. Основной фрагмент является исходной горизонтальной частью индекса, а затем эти основные фрагменты копируются в фрагменты-копии.

Копии

Elasticsearch позволяет пользователям создавать копии индексов и фрагментов. Копирование не только помогает повысить доступность данных в случае отказа, но и улучшает производительность поиска за счет выполнения параллельных поисковых операций на этих副本ах.

Преимущества

  • Elasticsearch разработан на Java, что делает его совместимым с几乎 всеми платформами.

  • Elasticsearch является реальным временем, что означает, что документ, добавленный через одну секунду, уже можно искать в этом двигателе.

  • Elasticsearch является распределенной системой, поэтому легко расширять и интегрировать ее в любую крупную организацию.

  • Создание полных резервных копий с использованием концепции gateway очень просто, и эта концепция широко используется в Elasticsearch.

  • По сравнению с Apache Solr, обработка многонациональных пользователей в Elasticsearch очень проста.

  • Elasticsearch использует объекты JSON в качестве ответа, что позволяет использовать множество различных языков программирования для вызова сервера Elasticsearch.

  • Elasticsearch поддерживает几乎所有文档 типы, кроме тех, которые не поддерживают отрисовку текста.

Недостатки

  • В обработке запросов и ответов данных Elasticsearch не предоставляет поддержку множественных языков (доступна только в формате JSON), в отличие от Apache Solr, который может обрабатывать форматы CSV, XML и JSON.

  • Иногда в Elasticsearch может возникнуть проблема разрыва мозга.

Сравнение Elasticsearch и RDBMS

В Elasticsearch индекс подобен таблице RDBMS (система управления реляционными базами данных). Каждая таблица представляет собой набор строк, так же как каждый индекс представляет собой набор документов в Elasticsearch.

В таблице ниже приведено прямое сравнение этих терминов-

ElasticsearchСистема управления реляционными базами данных (RDBMS)
КластерБаза данных
ФрагментФрагмент
ИндексТаблица
ПолеСтолбец
ДокументСтрока