В чем разница между Lucene и Elasticsearch

139

Я знаю, что ElasticSearch построен на Apache Lucene, но я хочу знать существенные различия между ними.

Сатиш Мадивал
источник

Ответы:

219

Lucene - это библиотека Java . Вы можете включить его в свой проект и ссылаться на его функции с помощью вызовов функций.

Elasticsearch является JSON Based, Распределенная , веб - сервер построен на Lucene. Хотя фактическую работу ниже выполняет Lucene, Elasticsearch предоставляет нам удобный слой поверх Lucene. Каждый шард, создаваемый в Elasticsearch, представляет собой отдельный экземпляр Lucene. Итак, чтобы подвести итог

  1. Elasticsearch построен на Lucene и предоставляет REST API на основе JSON для обращения к функциям Lucene.
  2. Elasticsearch предоставляет распределенную систему поверх Lucene . Распределенная система - это не то, о чем Lucene знает или для чего не создана. Elasticsearch предоставляет эту абстракцию распределенной структуры.
  3. Elasticsearch предоставляет другие вспомогательные функции, такие как пул потоков, очереди, API мониторинга узлов / кластеров, API мониторинга данных, управление кластерами и т. Д.
Винет Мохан
источник
1
Есть ли разница между ними в отношении хранилища данных?
AlikElzin-kilaka
А как насчет хранилища данных?
Rookian 01
10
Не уверен, что это ответ на ваш вопрос в DataStore, но каждый узел Elasticsearch содержит шарды. Единый индекс Elasticsearch распространяется по узлам с использованием шардов. Каждый Shard содержит часть документов в Elasticsearch Index. Каждый из этих осколков является экземпляром Lucene. Таким образом, в корне все данные хранятся в Lucene, а Elasticsearch управляет взаимодействиями.
Airn5475
32

В дополнение к словам @Vineeth Mohan :

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

Мощный DSL запросов : Elasticsearch предлагает нам интерфейс JSON для чтения и записи запросов поверх Lucene. Благодаря Elasticsearch вы можете писать сложные запросы, не зная синтаксиса Lucene.

Schemaless (без схемы): поля (имя, пары значений) для schemaнеобязательно определять раньше. Когда вы индексируете данные, elasticsearch может автоматически создавать схему во время выполнения, как по волшебству.

fgul
источник
0

Я отвечу с точки зрения использования.

Lucene - это библиотека для поисковых систем . Вы хотели бы использовать его для создания собственной поисковой системы: либо новый конкурент Elasticsearch или Solr, либо что-то узкое для вашего варианта использования (например, анализ текста).

Elasticsearch - это поисковая система . Большинство людей используют его для агрегирования журналов, поиска товаров или их варианта (например, анализа социальных сетей или поиска подходящих людей по некоторым критериям поиска). Он построен на основе Lucene, поэтому раскрывает большинство (хотя и не все) его функций . Это также добавляет много нового, и самое главное:

  • REST API
  • запросить DSL
  • распределенная система (шардинг, репликация, управление кластером)
  • грани / агрегации
  • дополнительные функции для общего использования (например, обработка захвата ) и управления (API-интерфейсы для мониторинга соответствующих показателей , резервного копирования и восстановления и т. д.)
Раду Георге
источник