So konfigurieren Sie elasticsearch cluster auf einem Server, um die beste Leistung bei der Suche zu erzielen

Ich bin neu bei elasticsearch. Ich habe einen Elasticsearch-Index von ungefähr 300.000 Artikeln. Für jeden der 60 Millionen Datensätze in einer anderen Tabelle muss ich eine komplexe Abfrage für diesen ES-Index durchführen.

Im Moment ist es extrem langsam (1000 Abfragen würden 200 Sekunden dauern). Ich benötige Ratschläge zur Konfiguration meines Elasticsearch-Clusters für die Bearbeitung einer großen Anzahl von Abfragen.

Mein Server:

8 core
8GB ram
SSD Hardware

Ich möchte elasticsearch so konfigurieren, dass 1000 gleichzeitige Suchanfragen von Ruby bearbeitet werden. (Ich möchte 1000 Artikel parallel durchsuchen).

Ich habe es mit der Standardkonfiguration versucht

Ich denke, standardmäßig kann elasticesearch nur ungefähr 10-20 gleichzeitige Suchanfragen bearbeiten. Es benutzt wenig CPU und RAM. Daher denke ich, ich könnte es verbessern.

Ich konnte nur 100 Threads von Ruby ausführen, um 1000 Elemente zu durchsuchen, und es dauert ungefähr 200 Sekunden. Wenn ich von Ruby auf 1000 Threads erhöhe, gibt ES eine Timeout-Fehlermeldung zurück.

Ich betreibe einen Masterknoten mit

ES_HEAP_SIZE=2G

indices.fielddata.cache.size: 1g 

threadpool:   
   search:
      type: fixed
      size: 200
      queue_size: 400

shares: 5 

replicas: 1

Das Ausführen von 100 Threads von Ruby zur Suche von 1000 Elementen dauert noch 200 Sekunden.

Ich füge 3 neue Knoten als Datenknoten auf diesem Server hinzu.

Das Ausführen von 100 Threads von Ruby zur Suche von 1000 Elementen dauert immer noch 200s oder mehr.

Ich google und lese aus einigen Beiträgen. Die Leute sagen, dass mehr Scherben die Suche verlangsamen werden lassen.

Wie kann ich meine Suchanfrage verbessern?

Danke vielmals!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage