2017-10-24 1 views
1

Wir verwenden BULK api, um mehrere Dokumente zu indizieren. Wir versuchen, die Chargengröße indirekt über verschiedene Parameter zu steuern. Aber ich wollte wissen, ob es eine saubere und empfohlene Möglichkeit gibt, die physische Größe des Stapels vorzubereiten, bevor die BULK-Indexanforderung an ES gesendet wird.Elasticsearch - Physische Größe einer Massenanforderung

Hinweis: Sprache - C# NEST

Antwort

0

TLDR

  • gesamte Bulk-Abfrage sollte in RAM
  • nach bestimmten Größe Leistung nicht mehr verbessert
  • es ist für verschiedene Hardware geladen werden - - Experiment, um Ihre Größe zu finden

https://www.elastic.co/guide/en/elasticsearch/guide/current/bulk.html

Die gesamte Masse Anforderung muss durch den Knoten in den Speicher geladen werden, die unsere Anfrage erhält, so desto größer die Anforderung, die weniger Speicher für andere Anforderungen zur Verfügung. Es gibt eine optimale Größe von Bulk Anfrage. Ab dieser Größe verbessert sich die Leistung nicht mehr und kann sogar fallen. Die optimale Größe ist jedoch keine feste Zahl. Es hängt davon ab, vollständig auf Ihrer Hardware, Ihre Dokumentgröße und Komplexität, und Ihre Indizierung und Suche laden.

Glücklicherweise ist es einfach, diesen Sweet Spot zu finden: Versuchen Sie, typische Dokumente in Chargen zunehmender Größe zu indizieren. Wenn die Leistung abfällt, ist die Stapelgröße zu groß. Ein guter Startpunkt ist mit Chargen von 1.000 bis 5.000 Dokumente oder, wenn Ihre Dokumente sehr groß sind, mit noch kleineren Chargen.

Es ist oft nützlich, die physische Größe Ihrer Massenanforderungen zu überwachen. Anfragen. Eintausend 1KB Dokumente sind sehr verschieden von einem tausend 1MB Dokumente. Eine gute Bulk-Größe, um mit dem Spielen zu beginnen, ist um 5-15MB groß.

Verwandte Themen