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