Lucene和Elasticsearch有什么区别


Answers:


217

Lucene是一个Java库。您可以将其包含在项目中,并使用函数调用来引用其功能。

Elasticsearch是一个JSON基于,分布式网络服务器建在Lucene的。尽管是Lucene在做下面的实际工作,但是Elasticsearch为我们提供了一个在Lucene之上的便利层。在Elasticsearch中创建的每个碎片都是一个单独的Lucene实例。所以总结一下

  1. Elasticsearch 基于 Lucene构建,并提供基于JSON的REST API来引用Lucene功能。
  2. Elasticsearch 在Lucene之上提供了一个分布式系统。分布式系统不是Lucene意识到或建立的。Elasticsearch提供了这种分布式结构的抽象。
  3. Elasticsearch提供了其他支持功能,例如线程池,队列,节点/集群监视API,数据监视API,集群管理等。

1
两者在数据存储方面有区别吗?
AlikElzin-kilaka

数据存储如何?
Rookian

10
不知道这是否可以回答您关于DataStore的问题,但是每个Elasticsearch节点都包含碎片。使用碎片将单个Elasticsearch索引分布在各个节点上。每个碎片在Elasticsearch Index中都保存了一部分文档。这些碎片中的每个碎片都是Lucene的一个实例。因此,从根本上讲,所有数据都存储在Lucene中,而Elasticsearch管理交互。
Airn5475 '18 -5-9

32

除了@Vineeth Mohan的话:

高可用性: Elasticsearch是分布式的,因此它可以管理数据复制,这意味着在集群中具有多个数据副本。这样可以实现高可用性。

强大的查询DSL:Elasticsearch为我们提供了JSON接口,用于在Lucene之上读写查询。借助Elasticsearch,您可以编写复杂的查询而无需了解Lucene语法。

无模式(无模式):字段(名称,值对)schema不必在之前定义。索引数据时,elasticsearch可以像魔术一样在运行时自动创建模式。


0

我将从使用角度进行回答。

Lucene是一个搜索引擎。您想使用它来构建自己的搜索引擎:新的Elasticsearch或Solr竞争对手,或者仅适合您的用例(例如,文本分析)。

Elasticsearch是一个搜索引擎。大多数人将其用于日志汇总,产品搜索或这两者的变体(例如,社交媒体分析或为某些搜索条件寻找相关人员)。它建立在Lucene之上,因此它暴露了大部分(尽管不是全部)功能。它还在顶部增加了很多,最重要的是:

  • REST API
  • 查询DSL
  • 分布式系统(分片,复制,集群管理)
  • 方面/ 集合
  • 常用用法(例如摄取处理)和管理的附加功能(用于监视其相关指标,备份和还原等的API )
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.