sync/async 在 Python 中插入或更新 ElasticSearch
sync/async insert or update ElasticSearch in Python
我正在使用 ElasticSearch 批量 Python API,它是否同时提供同步和异步功能 api?
如果sync
是指阻塞操作
在Python中,bulk
函数是同步的。通过 helper
的最简单方法
elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)
它return是一个包含摘要信息的元组。因此它是同步的。
如果sync
是指一致性
来自bulk api:
When making bulk calls, you can require a minimum number of active shards in the partition through the consistency parameter
在 python 中,bulk
function 有一个 consistency
参数,允许您明确有多少分片必须确认方法更改为 return。
如果timeout
你的意思是在一段时间后停止操作的方法
如果您需要限制批量操作的持续时间,那么低级别 bulk()
函数又是您的朋友。它需要一个 timeout
参数来添加一个明确的操作超时。
更一般地说,
Global timeout can be set when constructing the client (see Connection‘s timeout parameter) or on a per-request basis using request_timeout (float value in seconds) as part of any API call
例如:
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)
作为旁注,我在 java 中搜索了 bulk()
调用,尤其是 bulk().await()
。我找不到任何东西。可以问一下出处吗?
我正在使用 ElasticSearch 批量 Python API,它是否同时提供同步和异步功能 api?
如果sync
是指阻塞操作
在Python中,bulk
函数是同步的。通过 helper
elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)
它return是一个包含摘要信息的元组。因此它是同步的。
如果sync
是指一致性
来自bulk api:
When making bulk calls, you can require a minimum number of active shards in the partition through the consistency parameter
在 python 中,bulk
function 有一个 consistency
参数,允许您明确有多少分片必须确认方法更改为 return。
如果timeout
你的意思是在一段时间后停止操作的方法
如果您需要限制批量操作的持续时间,那么低级别 bulk()
函数又是您的朋友。它需要一个 timeout
参数来添加一个明确的操作超时。
更一般地说,
Global timeout can be set when constructing the client (see Connection‘s timeout parameter) or on a per-request basis using request_timeout (float value in seconds) as part of any API call
例如:
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)
作为旁注,我在 java 中搜索了 bulk()
调用,尤其是 bulk().await()
。我找不到任何东西。可以问一下出处吗?