Sat*_*wal 114 lucene elasticsearch
我知道ElasticSearch是基于Apache Lucene构建的,但我想知道两者之间的重大差异.
Vin*_*han 184
Lucene是一个Java库.您可以将它包含在项目中,并使用函数调用来引用它的函数.
Elasticsearch是一个JSON基于,分布式,网络服务器构建了Lucene的.虽然Lucene正在做下面的实际工作,但Elasticsearch为我们提供了一个比Lucene更方便的层.Elasticsearch中的每个共享都是一个单独的Lucene实例.总结一下
fgu*_*gul 24
除了@Vineeth Mohan的话:
高可用性: Elasticsearch是分布式的,因此可以管理数据复制,这意味着在群集中拥有多个数据副本.这样可以实现高可用性.
功能强大的查询DSL:Elasticsearch为我们提供了用于读取和编写查询的JSON接口,最重要的是Lucene.Thanks到Elasticsearch,这样您就可以在不知道Lucene语法的情况下编写复杂的查询.
Schemaless(Schema-Free):之前schema
不必定义字段(名称,值对).当您索引数据时,elasticsearch可以在运行时自动创建模式,就像魔术一样.
Rtm*_*tmY 12
我将添加另一个角度来进行讨论。
\nElasticsearch索引是一大块文档,就像关系世界中的数据库由表组成一样。
为了实现扩展,我们将 Elasticsearch 索引分散到多个物理节点/服务器中。
为此,我们将 Elasticsearch 索引分成更小的单元,称为分片。
\n问:它和Lucene索引有什么关系?
\n如果我们想要搜索特定术语(例如:“ Cake ”或“ Cookie ”),我们必须遍历每个分片并查找它(让我们先不考虑分片在每个节点上的定位和复制方式) 。
这个操作会花费很多时间——所以我们需要使用一个高效的数据结构来进行这个搜索——这就是Lucene的索引发挥作用的地方。
\n每个Elasticsearch分片都基于Lucene索引结构,并存储有关术语的统计信息,以使基于术语的搜索更加高效。
\n(!) 这非常令人困惑,因为“索引”一词以及 Elasticsearch 分片是 Elasticsearch 索引的一部分但基于 Lucene 索引的数据结构这一事实。
\n从下面的例子可以看出,Lucene的索引存储了原始文档\xe2\x80\x99s的内容以及附加信息,例如术语词典和术语频率,这\n提高了搜索效率:
\nTerm Document Frequency\nCake doc_id_1, doc_id_8 4 (2 in doc_id_1, 2 in doc_id_8)\nCookie doc_id_1, doc_id_6 3 (2 in doc_id_1, 1 in doc_id_6)\nSpaghetti doc_id_12 1 (1 in doc_id_12)\n
Run Code Online (Sandbox Code Playgroud)\nLucene 的索引属于称为倒排索引的索引系列。这是因为它可以针对某个术语列出包含该术语的文档。
\n这是自然关系的反面,其中文档列出了术语。
(1) Shard是包含文档的文件目录。
\n(2) 文档是一系列字段。
\n(3) 字段是术语的命名序列。
小智 9
我从使用的角度来回答。
Lucene 是一个搜索引擎库。您希望使用它来构建自己的搜索引擎:要么是新的 Elasticsearch 或 Solr 竞争对手,要么是适合您的用例的搜索引擎(例如文本分析)。
Elasticsearch 是一个搜索引擎。大多数人将其用于日志聚合、产品搜索或这两者的变体(例如社交媒体分析或根据某些搜索条件查找相关人员)。它构建在 Lucene 之上,因此公开了其大部分(尽管不是全部)功能。它还增加了很多东西,最重要的是:
归档时间: |
|
查看次数: |
36021 次 |
最近记录: |