我使用的是Elasticearch的打字脚本客户端,当我尝试更新文档时:
import { RequestParams } from '@elastic/elasticsearch'
const updateParam: RequestParams.Update = {
id: '111',
index: 'myIndex',
body: {email: 'aaa@aa.ca'},
}
return elasticsearchClient.update(updateParam)
我收到一个错误,内容是:
{
"error": {
"root_cause": [
{
"type": "x_content_parse_exception",
"reason": "[1:2] [UpdateRequest] unknown field [id], parser not found"
}
],
"type": "x_content_parse_exception",
"reason": "[1:2] [UpdateRequest] unknown field [id], parser not found"
},
"status": 400
}
但是根据这里的文档:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#_update,id
是输入中的一个字段
我的请求参数有什么问题?
4条答案
按热度按时间relj7zay1#
结果是,RequestParams.Update应该如下所示:
因此,实际数据将需要 Package 在“doc”字段中。我会在GitHub上向自由党做公关...人们不可能仅仅通过文档就能弄明白这一点。
ax6ht2ek2#
将身体发送到“DOC”密钥以解决此问题。我使用的是TypeScrip和Elasticearch 7.8。早些时候是6.7版本,没有发现任何问题,但在迁移到较新版本后开始出现问题。
um6iljoc3#
此‘id’不是文档内容中的字段。就像‘index’和‘type’一样。当您更新一个文档时,您不能更改索引的名称和类型,因此您不能更改一个文档的id。它是文档的标识。但是,如果您有一个名为‘id’的字段,您可以这样更新。
ryevplcw4#
ElasticSearch
7.17
docs中提到了将正文 Package 在doc
密钥中以执行部分更新