Синхронизировать / асинхронно вставить или обновить 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()
, Я не мог ничего найти. Могу ли я спросить у вас источник?