Elasticsearch从哪里开始

拥有发达的社区,支持和大量网络信息,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 — , . , .

.
ElasticsearchSQLMongoDB
IndexDatabaseDatabase
Mapping/TypeTableCollection
FieldColumnField
Object(JSON)TupleObject(BSON)


. . , . ! 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 — . .

:
  • cluster.name


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. :


  • Map — ,
  • Reduce — worker-


. , 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.

, , , , , .



, , . , . .


HTTP, . HTTP . HTTP API , ES, . . JSON., . .
ES Native. , .JVM. ES. . .

Elsaticsearch .


, . — Elasticsearch , .


我试图简要地,始终如一地谈论其工作方式以及原因。在本文中,我故意没有提及弹性生态系统,插件,请求,令牌化,映射以及其他内容。我还没有提到Ingest和机器学习节点,我认为它们提供了附加功能,并且不是基本功能。


附加材料


弹性堆栈和产品文档


调整Elasticsearch的大小


Elasticsearch 5.x Cookbook,第三版


All Articles