¿Cómo mejorar la velocidad de búsqueda de una consulta en Elastic Search?

Aug 16 2020

El host es AWS de ElasticSearch, tengo 2 TB de datos almacenados en 6 nodos y en 30 índices con 10 fragmentos cada uno. Una búsqueda simple en todos los índices es muy, muy lenta y lleva unos minutos.

¿Dónde cometí el error? ¿Es eso normal o tengo una mala configuración o tal vez tengo demasiados datos almacenados?

Mi configuración de clúster:

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

Configuración de mis nodos:

"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
}

¡Gracias!

Respuestas

3 ElasticsearchNinja Aug 16 2020 at 14:17

Es una pregunta muy amplia con muy menos información, ¿puede proporcionar más información como:

  1. Cuántos datos tienes y tamaño de cada fragmento.
  2. Consultas de búsqueda de muestra con su tiempo medio empleado.
  3. tamaño del montón de nodos de datos y por qué tiene allocated_processorsmuy menos (2) que los procesadores disponibles (32)
  4. Cuántos documentos está obteniendo en su consulta de búsqueda, es decir, parámetro de tamaño.
  5. Latencia de búsqueda wrt a no de llamadas de búsqueda
  6. Buscar registros lentos de elasticsearch (ES)

Puede consultar mis 10 consejos para mejorar el rendimiento de búsqueda y también decirme los valores de algunos parámetros mencionados en los consejos, también puede probar la herramienta de optimización de clústeres para ajustar la configuración de clústeres y nodos de ES.

Como se discutió en el comentario, consulte el blog de registro lento de búsqueda de opster para depurar el problema de manera más eficiente.

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

Eso es demasiado. El tamaño objetivo de un fragmento debe ser de alrededor de 50 Gb. Con su configuración, está más alrededor de 5 Gb cada uno. Puede reducir a 5 fragmentos o menos y forzar la fusión a 1 segmento. Las actuaciones deberían mejorarse mucho.

Después de eso, mire otros buenos consejos proporcionados por Optsters en su blog. Todos son relevantes.