Wo beginnt Elasticsearch?

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

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


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


All Articles