Каков максимальный размер документа Elasticsearch?

Я читал заметки о Люцене, ограниченном документами 2Gb. Существуют ли дополнительные ограничения на размер документов, которые могут быть проиндексированы в Elasticsearch?

Ответы

Ответ 1

Lucene использует внутренний буфер байта, который использует 32-битные целые числа для адресации. По определению это ограничивает размер документов. Таким образом, теоретически 2GB является макс.

В ElasticSearch:

В коде ES GitHub есть max http request size, и он установлен на Integer.MAX_VALUE или 2^31-1. Итак, в основном, 2 ГБ - это максимальный размер документа для массовой индексации по HTTP. Кроме того, чтобы добавить к нему, ES не обрабатывает HTTP-запрос до его завершения.

Хорошая практика:

  • Не используйте очень большую кучу java, если вы можете ей помочь: установите ее только настолько большую, насколько это необходимо (в идеале, не более половины ОЗУ), чтобы удержать общий максимальный размер рабочего набора для вашего использования Elasticsearch. Это оставляет оставшуюся (мы надеемся, значительную) оперативную память для ОС для управления кэшем IO.
  • На стороне клиента всегда используйте массив api, который индексирует несколько документов в одном запросе и экспериментирует с нужным количеством документов для отправки с каждым массовым запросом. Оптимальный размер зависит от многих факторов, но старайтесь ошибиться в сторону слишком мало, а не слишком много документов. Используйте параллельные массовые запросы с потоками на стороне клиента или отдельные асинхронные запросы.

Для дальнейшего изучения обратитесь к этим ссылкам:

1) Показатели производительности для индексации elasticsearch

2) Максимальный размер документа для массовой индексации по HTTP