ElasticSearch更新出现未知字段错误

gev0vcfq  于 2022-10-06  发布在  ElasticSearch
关注(0)|答案(4)|浏览(272)

我使用的是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是输入中的一个字段

我的请求参数有什么问题?

relj7zay

relj7zay1#

结果是,RequestParams.Update应该如下所示:

const updateParam: RequestParams.Update = {
      id: '111',
      index: 'myIndex',
      body: {doc:{email: 'aaa@aa.ca'}},
}

因此,实际数据将需要 Package 在“doc”字段中。我会在GitHub上向自由党做公关...人们不可能仅仅通过文档就能弄明白这一点。

ax6ht2ek

ax6ht2ek2#

将身体发送到“DOC”密钥以解决此问题。我使用的是TypeScrip和Elasticearch 7.8。早些时候是6.7版本,没有发现任何问题,但在迁移到较新版本后开始出现问题。

um6iljoc

um6iljoc3#

此‘id’不是文档内容中的字段。就像‘index’和‘type’一样。当您更新一个文档时,您不能更改索引的名称和类型,因此您不能更改一个文档的id。它是文档的标识。但是,如果您有一个名为‘id’的字段,您可以这样更新。

ryevplcw

ryevplcw4#

ElasticSearch 7.17docs中提到了将正文 Package 在doc密钥中以执行部分更新

相关问题