Elasticsearch ist derzeit wahrscheinlich die beliebteste Suchmaschine mit einer entwickelten Community, Unterstützung und einem Berg von Informationen im Web. Diese Informationen kommen jedoch uneinheitlich und geringfügig an.
Das allererste und wichtigste Missverständnis ist "Sie brauchen eine Suche, also nehmen Sie ein Gummiband!". Wenn Sie jedoch in der Realität schnell nach einem kleinen oder sogar einem ziemlich großen Projekt suchen müssen, sollten Sie das Thema genauer verstehen und sich weigern, dieses spezielle System zu verwenden.
Das zweite Problem ist, dass es nicht einfach sein wird, von Anfang an herauszufinden, wie man es schafft. Ja, Informationen in großen Mengen, aber die Reihenfolge in der Studie wird nachträglich erstellt. Sie müssen von den Büchern zur Dokumentation und von der Dokumentation zurück zu den Büchern laufen und gleichzeitig Feinheiten googeln, um zu verstehen, was Elasticsearch ist, warum es so funktioniert und warum es überhaupt verwendet wird und wo Sie etwas Einfacheres auswählen können.
In diesem Artikel habe ich versucht, konsequent zu erklären, was mir in Elasticsearch als Hauptsache erscheint, warum es erfunden wurde und wie es funktioniert.
Aus Gründen der Klarheit erfinden wir eine Aufgabe für uns. Implementierung einer Suche in einem kollektiven Blog für alle Materialien und Benutzer. Mit dem System können Sie Tags, Communitys, Geometrien und alle anderen Dinge erstellen, mit denen wir eine große Menge an Informationen kategorisieren können.
, :
. , , , , , , . . . , .
? . - . .
, . .
{
"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 , .
Ich habe versucht, kurz und konsequent darüber zu sprechen, wie und warum es genau so funktioniert. In diesem Artikel habe ich das elastische Ökosystem, Plugins, Anforderungen, Tokenisierung, Zuordnung und den Rest absichtlich nicht erwähnt. Ich habe auch nicht über Ingest- und maschinelle Lernknoten gesprochen. Meiner Meinung nach bieten sie zusätzliche Funktionen und sind nicht grundlegend.
Zusätzliche Materialien
Elastic Stack und Produktdokumentation
Dimensionierung Elasticsearch
Elasticsearch 5.x Kochbuch, dritte Ausgabe