gpt4 book ai didi

python - Elasticsearch python 库,如果存在则更新

转载 作者:行者123 更新时间:2023-11-28 17:08:02 25 4
gpt4 key购买 nike

如果该文档存在,我想更新索引中的文档,批量操作操作中的 op_type="update"失败并出现错误。我不确定在执行更新操作时文档是否已经存在于索引中。 op+type="update"是否仅当文档已存在于索引中时才允许?

最佳答案

是的,如果您要更新的文档不在索引中,op_type=update 将引发一个document_missing_exception 异常。但是,您可以通过将 raise_on_error=False 传递给 python bulk helper 来选择忽略此异常。但一定要处理批量请求的返回值,以防出现意外的索引错误。

这是一个例子:

from elasticsearch.helpers import bulk
from elasticsearch import Elasticsearch

URL = "http://localhost:9200"
ES = Elasticsearch(URL)

# drop index if it exists
ES.indices.delete("twitter", ignore=400)

# create the index
ES.indices.create("twitter", {
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"tweet" : {
"properties" : {
"text" : { "type" : "text" }
}
}
}
})

# define the actions
actions = [
{
'_op_type': 'create',
'_index': 'twitter',
'_type': 'tweet',
'_id': "A",
'doc': {'text': 'test it!!!!'}
},
{
'_op_type': 'create',
'_index': 'twitter',
'_type': 'tweet',
'_id': "B",
'doc': {'text': 'test it, B!' }
},
{
'_op_type': 'update',
'_index': 'twitter',
'_type': 'tweet',
'_id': "A",
'doc': {'text': 'update it!'}
},
{
'_op_type': 'update',
'_index': 'twitter',
'_type': 'doc',
'_id': "C",
'doc': {'text': 'Update should fail, this doc has not been created yet'}
}
]

# bulk update the index. Set raise_on_error=False to avoid raising the "document_missing_exception"
# CAUTION! you'll want to carefully parse the output of this in case an unexpected exception is thrown
result = helpers.bulk(ES, actions, raise_on_error=False)

# parse the return result of bulk to account for all errors.

关于python - Elasticsearch python 库,如果存在则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49717535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com