我正在使用 ElasticSearch 批量 Python API,它是否同时提供同步和异步 api?
问问题
2125 次
1 回答
7
如果sync
你的意思是阻塞操作
在 Python 中,bulk
函数是同步的。通过助手的最简单方法
elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)
它返回一个带有摘要信息的元组。因此它是同步的。
如果sync
你的意思是一致性
从批量 api:
在进行批量调用时,您可以通过一致性参数要求分区中的最小活动分片数
在 python 中,该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()
. 我什么也找不到。我可以问你的来源吗?
于 2016-02-01T08:15:08.843 回答