Como melhorar a velocidade de pesquisa de uma consulta no Elastic Search?

Aug 16 2020

O host é AWS da ElasticSearch, tenho 2 TB de dados armazenados em 6 nós e em 30 índices com 10 fragmentos cada. Uma pesquisa simples em todos os índices é muito lenta e leva alguns minutos.

Onde cometi o erro? Isso é normal ou tenho configurações incorretas ou talvez tenha muitos dados armazenados?

Minhas configurações de cluster:

"search": {
     "max_queue_size": "1000",
     "queue_size": "1000",
     "size": "4",
     "auto_queue_frame_size": "2000",
     "target_response_time": "1s",
     "min_queue_size": "1000"
},

Configurações de meus nós:

"os": {
     "refresh_interval_in_millis": 1000,
     "name": "Linux",
     "pretty_name": "CentOS Linux 7 (Core)",
     "arch": "amd64",
     "version": "4.15.0-1039-aws",
     "available_processors": 32,
     "allocated_processors": 2
}

Obrigado!

Respostas

3 ElasticsearchNinja Aug 16 2020 at 14:17

É uma questão muito ampla com muito menos informações. Você poderia fornecer mais informações como:

  1. Quantos dados você tem e tamanho de cada fragmento.
  2. Exemplos de consultas de pesquisa com o tempo médio gasto.
  3. tamanho do heap dos nós de dados e por que você tem allocated_processorsmuito menos (2) do que os processadores disponíveis (32)
  4. Quantos documentos você está obtendo em sua consulta de pesquisa, ou seja, parâmetro de tamanho.
  5. Latência de pesquisa em relação ao número de chamadas de pesquisa
  6. Pesquisar logs lentos de elasticsearch (ES)

Você pode consultar minhas 10 dicas sobre como melhorar o desempenho de pesquisa e também me dizer os valores de alguns parâmetros mencionados nas dicas, também pode tentar a ferramenta de otimizador de cluster para ajustar as configurações de cluster e nós do ES.

Conforme discutido no comentário, consulte o blog de log lento de pesquisa do opster para depurar problemas com mais eficiência.

1 Jaycreation Aug 19 2020 at 11:20
1)I have 2TB data. Every index has 50GB or more. Each has 10 shards and a replica

Isso é muito. O tamanho da meta para um fragmento deve ser em torno de 50 Gb. Com sua configuração, você tem cerca de 5 Gb cada. Você pode reduzir para 5 fragmentos ou menos e forçar a fusão para 1 segmento. As performances devem ser melhoradas muito.

Depois disso, dê uma olhada em outros bons conselhos fornecidos por Optsters em seu blog. Todos eles são relevantes.