Onde o Elasticsearch começa

O Elasticsearch é provavelmente o mecanismo de pesquisa mais popular no momento, com uma comunidade desenvolvida, suporte e uma montanha de informações na web. No entanto, essas informações chegam de maneira inconsistente e fracionária.


O primeiro e principal equívoco é "você precisa de uma pesquisa, então use um elástico!". Mas, na realidade, se você precisar de uma pesquisa rápida para um projeto pequeno ou muito grande, deve entender o tópico com mais detalhes e se recusará a usar esse sistema em particular.


O segundo problema é que tentar descobrir isso desde o início, não será fácil obter o quadro geral. Sim, informações em massa, mas a sequência em seu estudo é construída ex post. Você precisará executar os livros para a documentação, e da documentação para os livros, ao mesmo tempo pesquisando sutilezas, apenas para entender o que é o Elasticsearch, por que funciona dessa maneira e por que usá-lo, e onde escolher algo mais simples.


Neste artigo, tentei explicar consistentemente o que me parece a principal coisa no Elasticsearch, por que foi inventado e como funciona.


Para maior clareza, inventaremos uma tarefa para nós mesmos. Implementação de uma pesquisa em um blog coletivo para todos os materiais e usuários. O sistema permite criar tags, comunidades, geometrias e todas as outras coisas que nos ajudam a categorizar uma enorme quantidade de informações.



, :


  • , , ,
  • ( , )

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


? . - . .


, . .



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


Tentei falar de forma breve e consistente sobre como e por que é exatamente assim que funciona. Neste artigo, eu não mencionei intencionalmente o ecossistema Elastic, plugins, consultas, tokenização, mapeamento e o restante. Eu também não disse sobre nós Ingest e Machine Learning, na minha opinião, eles fornecem recursos adicionais e não são básicos.


Materiais adicionais


Pilha elástica e documentação do produto


Pesquisando o Elasticsearch


Livro de receitas do Elasticsearch 5.x, terceira edição


All Articles