拥有发达的社区,支持和大量网络信息,Elasticsearch可能是当前最受欢迎的搜索引擎。但是,此信息不一致且部分到达。
第一个也是最重要的误解是“您需要搜索,所以要松紧!”。但是实际上,如果您需要快速搜索小型甚至大型项目,则应该更详细地了解该主题,并且您将拒绝使用该特定系统。
第二个问题是,试图从一开始就弄清楚这一点,要获得全面发展并不容易。是的,信息量很大,但是研究的顺序是事后建立的。您将不得不从书本到文档,再从文档再到书本,同时仔细研究细微之处,仅是要了解Elasticsearch是什么,为什么它会以这种方式工作,为什么要使用它以及在何处选择更简单的方法。
在本文中,我试图一致地解释在我看来Elasticsearch中的主要内容是什么,为什么发明了它以及它是如何工作的。
为了清楚起见,我们将为自己发明一项任务。在集体博客中搜索所有材料和用户。该系统允许您创建标签,社区,几何形状以及所有其他有助于我们对大量信息进行分类的东西。
数据存储方案
我们将对数据执行哪些操作将确定存储方案:
- 搜索引擎很可能必须快速搜索
- 记录和删除可能无法通过高速来区分,在搜索引擎中,我认为可以忽略不计
- 数据结构将发生重大变化,并且存储可以从几个独立的来源(各种数据库,包括我们系统的外部数据库)中填充
. , , , , , , . . . , .
? . - . .
, . .
{
"title" : " Elasticsearch",
"author" : {
"name": "Roman"
},
"content" : "Elasticsearch, , ...",
"tags":[
"elasticsearch"
],
"ps": ", JSON, BSON XML"
}
, , , .
, , , . .
Elasticsearch
. . ?
-. , . .
, , , . .
. .
? , , , ( ) .
, , , . , , . , .
— , . , , , .
.
— open-source , , , Apache Lucene.
Elasticsearch Lucene
, , . , , , . .
— . , , . .
— . , , . , ?
, . ? - , . - — , , . , , .
, , . , — ( ), . — .
, Lucene. , . , ? . Lucene , (shard) . .
Shard Elasticsearch — , Lucene.
Index — , . , .
.
. . , . ! Elasticsearch . , , . . , .
5, index.number_of_shards: 1
.
PUT _template/all
{
"template": "*",
"settings": {
"number_of_shards": 1
}
}
. .
232 4294967296 , , . , , . , .
. Elasticsearch , . , 10 .
. , .
, Lucene(). , , , . — .
— CRUD- . data node coordinating node. .
Elasticsearch (node). Cluster — . .
:
elasticsearch.yml . , .
, http.port
, 9200 9300 . , .
. , data- .
, . "" . . , , 2007 .
6.7 Elasticsearch . — hot, warm cold.
. hot- SSD, warm cold HDD-. / :
- hot — 1:30
- warm — 1:100
- cold — 1:500
data node node.data: true
, , .
. , MapReduce. :
. , worker-( data-).
, coordinating- , , , .
, . . .
, .
Elasticsearch . , coordinating-, . , , false
.
— coordinating-. , / . , .
, coordinating- . data-, . , .
. , , . " " .
master-node. , : , , . .
Elasticsearch master node. node.master: true
.
Master- , . , . 10 only-master .
, . , . , , .
data-, .
. , . , , .
number_of_replicas
. :
PUT / _settings {
"index": {
"number_of_replicas": someVal
}
}
.
primary shard, replica shard, .
, , flush commit Lucene, .
Elasticsearch cluster health status. :
green
—yellow
— , ,red
— ,
, - .
. ? .
— .
, , , , ? ? , .
.
Elasticsearch node.master: true
, , , . :
node.master: true
node.data: true
. , . , . - , . split-brain problem.
. . , .
. . . , -.
. - , .
, ? ? ? ?
. .
, , 50%+ . , . .
, . :
_ = __/2 + 1
, . , , .
Elasticsearch , : node.voting_only: true
.
Elasticsearch . . , 7 4, , 3 , 4.
, , , , , .
, , . , . .
Elsaticsearch .
, . — Elasticsearch , .
我试图简要地,始终如一地谈论其工作方式以及原因。在本文中,我故意没有提及弹性生态系统,插件,请求,令牌化,映射以及其他内容。我还没有提到Ingest和机器学习节点,我认为它们提供了附加功能,并且不是基本功能。
附加材料
弹性堆栈和产品文档
调整Elasticsearch的大小
Elasticsearch 5.x Cookbook,第三版