¿Dónde comienza Elasticsearch?

Elasticsearch es probablemente el motor de búsqueda más popular en este momento con una comunidad desarrollada, soporte y una gran cantidad de información en la web. Sin embargo, esta información llega de manera inconsistente y fraccionada.


El primer y principal error es "necesitas una búsqueda, ¡así que toma un elástico!". Pero en realidad, si necesita una búsqueda rápida de un proyecto pequeño o incluso bastante grande, debe comprender el tema con más detalle y se negará a utilizar este sistema en particular.


El segundo problema es que tratar de resolverlo desde el principio, obtener el panorama general no será fácil. Sí, información en masa, pero la secuencia en su estudio se construye ex post. Tendrás que ir de los libros a la documentación, y de la documentación a los libros, al mismo tiempo buscar en Google las sutilezas, solo para entender qué es Elasticsearch, por qué funciona de esa manera y por qué usarlo, y dónde elegir algo más simple.


En este artículo, traté de explicar constantemente lo que me parece lo principal en Elasticsearch, por qué fue inventado y cómo funciona.


Para mayor claridad, inventaremos una tarea para nosotros mismos. Implementación de una búsqueda en un blog colectivo para todos los materiales y usuarios. El sistema le permite crear etiquetas, comunidades, geometrías y todo lo demás que nos ayuda a clasificar una gran cantidad de información.



, :


  • , , ,
  • ( , )

. , , , , , , . . . , .


? . - . .


, . .



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


Traté de hablar breve y consistentemente sobre cómo y por qué esto es exactamente cómo funciona. En este artículo, intencionalmente no mencioné el ecosistema elástico, complementos, consultas, tokenización, mapeo y el resto. Tampoco dije sobre la ingesta y los nodos de aprendizaje automático, en mi opinión, proporcionan características adicionales y no son básicos.


Materiales adicionales


Pila elástica y documentación del producto


Dimensionar Elasticsearch


Elasticsearch 5.x Cookbook, Third Edition


All Articles