Синхронизировать / асинхронно вставить или обновить ElasticSearch в Python

Я использую ElasticSearch для массового Python API. Обеспечивает ли он синхронизацию и Async API?

1 ответ

Решение

Если по sync Вы имеете в виду операцию блокировки

В Python bulk функции являются синхронными. Самый простой способ пройти через помощника

elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)

он возвращает кортеж со сводной информацией. Таким образом, это синхронно.

Если по sync ты имеешь в виду последовательность

Из основной API:

При массовых вызовах вам может потребоваться минимальное количество активных шардов в разделе через параметр согласованности

В питоне bulk функция имеет consistency параметр, позволяющий вам указать, сколько шардов должно было подтвердить изменение для возврата метода.

Если по timeout Вы имеете в виду способ остановить операцию через некоторое время

Если вам нужно ограничить продолжительность массовой операции, снова низкий уровень bulk() функция твой друг. Требуется timeout параметр, чтобы добавить явное время ожидания операции.

В более общем смысле,

Глобальное время ожидания может быть установлено при создании клиента (см. Параметр времени ожидания соединения) или на основе запроса, используя request_timeout (значение с плавающей запятой в секундах) как часть любого вызова API

Например:

from elasticsearch import Elasticsearch
es = Elasticsearch()
# only wait for 1 second, regardless of the client's default
es.cluster.health(wait_for_status='yellow', request_timeout=1)

Как примечание, я искал bulk() позвонить в Java и особенно bulk().await(), Я не мог ничего найти. Могу ли я спросить у вас источник?

Другие вопросы по тегам