gpt4 book ai didi

python - 在 elasticsearch 中更新索引时出现 RequestError

转载 作者:太空狗 更新时间:2023-10-30 00:27:54 27 4
gpt4 key购买 nike

我在 elasticsearch 中索引了一 strip 有特定时间戳的记录。我正在尝试使用以下代码(在 python 中)更新记录:

from elasticsearch import Elasticsearch
from datetime import datetime
import pytz

es = Elasticsearch()
time = datetime.utcnow().replace(tzinfo=pytz.utc)
msg = {'_id': 1, 'text': 'Hello World'}
es.index(index='idx', doc_type='dtype', id=msg['_id'], body=msg, timestamp=time, ttl='30d')
msg['text'] = 'New Message'
es.update(index='idx', doc_type='dtype', id=msg['_id'], body=msg, timestamp=time, ttl='30d')

我收到以下错误:

RequestError: TransportError(400, u'ActionRequestValidationException[Validation Failed: 1: script or doc is missing;]')

可能是什么原因?

最佳答案

消息编号 400 表示您有一个“错误的请求”。请求正文/URL 不是预期的内容。

在这种情况下,这是因为您没有在正文中使用脚本或文档。看看 Update API documentation获取更多信息。

下面的代码解决了你的问题:

from elasticsearch import Elasticsearch
from datetime import datetime
import pytz

es = Elasticsearch()
time = datetime.utcnow().replace(tzinfo=pytz.utc)
msg = {'_id': 1, 'text': 'Hello World'}
es.index(index='idx', doc_type='dtype', id=msg['_id'], body=msg, timestamp=time, ttl='30d')
msg2 = '''{"doc": {"text": "New Message"}}'''
es.update(index='idx', doc_type='dtype', id=msg['_id'], body=msg2, timestamp=time, ttl='30d')

通过用 doc 标签围绕您想要更改的信息,您告诉 ElasticSearch 您想要用部分文档的值替换这些值。

关于python - 在 elasticsearch 中更新索引时出现 RequestError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28434111/

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