Существуют ли ограничения на размер данных PUT / POST при индексации документов в Elastic Search через вызов Http? - PullRequest
0 голосов
/ 27 августа 2018

Я создаю расширенное поисковое приложение с использованием Elastic Search 5.0.1, в котором сотни тысяч записей индексируются в эластичный поиск. Это происходит каждые несколько секунд для нескольких индексов из моего Java-клиента, используя HttpURLConnection . Я использую Bulk API эластичного поиска , для которого я создаю один объект PUT, содержащий строки JSON, разделенные строками, как показано ниже (как показано в документации Bulk API ):

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n

Но, когда количество документов превышает определенный лимит, я получаю следующее исключение:

java.io.IOException: Error writing to server
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1216)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)

Как я мог проверить здесь , теоретического ограничения на размер данных PUT нет, а есть только ограничения, налагаемые клиентом и сервером.

Налагает ли служба Elastic Search какие-либо подобные ограничения? Если да, каковы эти ограничения и как лучше обрабатывать этот случай (изменить ограничения сервера или пакетные запросы)?

1 Ответ

0 голосов
/ 27 августа 2018

Нет жесткого предела, как указано в официальном руководстве , следует пытаться, пока не будут найдены "правильные" пределы.

Из этой ссылки вы можете увидеть:

Попробуйте индексировать типичные документы в пакетах увеличивающегося размера. Когда производительность начинает падать, размер вашей партии слишком велик. Хорошее место для начала - с 1000 до 5000 документов или, если ваши документы очень большие, с еще меньшими партиями.

Но обратите внимание:

Одна тысяча документов размером 1 КБ сильно отличается от одной тысячи документов размером 1 МБ. Хороший объем для начала игры составляет около 5-15 МБ.

Здесь вы можете найти официальных советов для оптимизации производительности массовых запросов

...