Come migliorare la velocità di ricerca di una query in Elastic Search?

Aug 16 2020

L'host è AWS di ElasticSearch, ho 2 TB di dati archiviati in 6 nodi e in 30 indici con 10 frammenti ciascuno. Una semplice ricerca in tutti gli indici è molto lenta e richiede pochi minuti.

Dove ho commesso l'errore? È normale o ho impostazioni sbagliate o forse ho troppi dati memorizzati?

Le mie impostazioni del cluster:

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

Impostazioni dei miei nodi:

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

Grazie!

Risposte

3 ElasticsearchNinja Aug 16 2020 at 14:17

È una domanda molto ampia con pochissime informazioni, puoi fornire più informazioni come:

  1. Quanti dati hai e dimensione di ogni frammento.
  2. Esempi di query di ricerca con il tempo medio impiegato.
  3. dimensione dell'heap dei nodi di dati e perché hai allocated_processorsmolto meno (2) dei processori disponibili (32)
  4. Quanti documenti stai recuperando nella query di ricerca, ad es. Parametro dimensione.
  5. Latenza di ricerca rispetto al numero di chiamate di ricerca
  6. Cerca nei log lenti di elasticsearch (ES)

Puoi fare riferimento ai miei 10 suggerimenti su come migliorare le prestazioni di ricerca e anche dirmi i valori di alcuni parametri menzionati nei suggerimenti, puoi anche provare lo strumento di ottimizzazione del cluster per mettere a punto le impostazioni di cluster e nodi di ES.

Come discusso nel commento, fare riferimento al blog di log lento della ricerca di opster per il debug del problema in modo più efficiente.

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

È troppo. La dimensione dell'obiettivo per uno shard dovrebbe essere di circa 50 GB. Con la tua impostazione sei più vicino a 5 Gb ciascuno. Puoi ridurre a 5 frammenti o meno e forzare l'unione a 1 segmento. Le prestazioni dovrebbero essere migliorate molto.

Dopodiché, guarda altri buoni consigli forniti da Optsters nel suo blog. Sono tutti rilevanti.