Où commence Elasticsearch

Elasticsearch est probablement le moteur de recherche le plus populaire en ce moment avec une communauté développée, un support et une montagne d'informations sur le web. Cependant, ces informations arrivent de manière incohérente et fractionnée.


La toute première et principale idée fausse est "vous avez besoin d'une recherche, alors prenez un élastique!". Mais en réalité, si vous avez besoin d'une recherche rapide pour un petit ou même un grand projet, vous devez comprendre le sujet plus en détail et vous refuserez d'utiliser ce système particulier.


Le deuxième problème est qu'essayer de le comprendre depuis le début, obtenir une vue d'ensemble ne sera pas facile. Oui, l'information en vrac, mais la séquence de son étude est construite ex post. Vous devrez parcourir les livres de la documentation et de la documentation aux livres, en même temps googler les subtilités, seulement pour comprendre ce qu'est Elasticsearch, pourquoi cela fonctionne de cette façon et pourquoi l'utiliser du tout, et où choisir quelque chose de plus simple.


Dans cet article, j'ai essayé d'expliquer de manière cohérente ce qui me semble être l'élément principal d'Elasticsearch, pourquoi il a été inventé et comment cela fonctionne.


Pour plus de clarté, nous allons inventer une tâche pour nous-mêmes. Mise en place d'une recherche dans un blog collectif pour tous les supports et utilisateurs. Le système vous permet de créer des balises, des communautés, des géométries et toutes autres choses qui nous aident à classer une énorme quantité d'informations.



, :


  • , , ,
  • ( , )

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


? . - . .


, . .



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


J'ai essayé de parler brièvement et systématiquement de comment et pourquoi c'est exactement ainsi que cela fonctionne. Dans cet article, je n'ai pas intentionnellement mentionné l'écosystème Elastic, les plugins, les requêtes, la tokenisation, la cartographie et le reste. Je n'ai pas non plus dit sur les nœuds Ingest et Machine Learning, à mon avis, ils fournissent des fonctionnalités supplémentaires et ne sont pas basiques.


Matériaux additionnels


Elastic Stack et documentation du produit


Dimensionnement d'Elasticsearch


Livre de cuisine Elasticsearch 5.x, troisième édition


All Articles