2015-03-03 14 views

Antwort

30

Lucene verwendet intern einen Byte-Puffer, der 32-Bit-Ganzzahlen für die Adressierung verwendet. Per Definition begrenzt dies die Größe der Dokumente. Also 2GB ist theoretisch maximal.

In Elasticsearch:

Es gibt eine max http request size im ES GitHub-Code, und es wird gegen Integer.MAX_VALUE oder 2^31-1. Also, im Grunde, 2GB ist die maximale Dokumentgröße für Massenindizierung über HTTP. Darüber hinaus verarbeitet ES keine HTTP-Anforderung, bis sie abgeschlossen ist.

Good Practices:

  • nicht einen sehr großen Java-Heap verwenden Sie, wenn Sie es vermeiden können: legen Sie es nur so groß wie nötig ist (im Idealfall nicht mehr als die Hälfte des RAM der Maschine) zu halten die maximale Größe des Arbeitssatzes für Ihre Verwendung von Elasticsearch. Dies lässt den verbleibenden (hoffentlich beträchtlichen) Arbeitsspeicher für das Betriebssystem für das IO-Caching übrig.
  • Verwenden Sie auf der Clientseite immer die Bulk-API, die mehrere Dokumente in einer Anforderung indexiert, und experimentieren Sie mit der richtigen Anzahl von Dokumenten, die mit jeder Massenanforderung gesendet werden sollen. Die optimale Größe hängt von vielen Faktoren ab, aber versuchen Sie, in Richtung zu wenig und nicht zu vielen Dokumenten zu irren. Verwenden Sie gleichzeitige Massenanforderungen mit clientseitigen Threads oder separaten asynchronen Anforderungen.

Für weitere Studie beziehen sich auf diese Links gilt:

1) Performance considerations for elasticsearch indexing

2) Document maximum size for bulk indexing over HTTP

+1

Für maximale HTTP-Request-Größe finden Sie unter: https://github.com/elastic/elasticsearch /blob/148265bd164cd5a614cd020fb480d5974f523d81/docs/reference/modules/http.asciidoc – vvs14

Verwandte Themen