Вы можете настроить общий размер при создании экземпляра ES. Примерно так:
conn = ES('127.0.0.1:9200', timeout=20.0, bulk_size=100)
Размер пакета по умолчанию - 400. Таким образом, pyes отправляет пакетное содержимое автоматически, когда вы получили 400 документов. Если вы хотите отправить объем до того, как мы достигли объемного размера (например, перед выходом), вы можете вызвать conn.flush_bulk (принудительный = True)
Я не уверен, что лучше всего было бы обновить индекс вручную для каждого N-го документа. Elasticsearch делает это автоматически по умолчанию каждую секунду. Что вы можете сделать, это увеличить это время. Как то так:
curl -XPUT localhost:9200/namesdb/_settings -d '{
"index" : {
"refresh_interval" : "3s"
}
}'
Или, вы можете обновить вручную, как предложил Драган, но в этом случае может иметь смысл отключить автоматическое обновление Elasticsearch, установив интервал в «-1». Но вам не нужно обновлять все X-документы, вы можете обновить их после того, как вставите их все.
Подробнее здесь:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-update-settings.html
Обратите внимание, что обновление довольно дорого, и, по моему опыту, вам лучше либо:
- позволяя Elastisearch делать обновления в фоновом режиме
- отключить обновление и включить его снова после того, как я закончу вставлять весь пакет документов