gpt4 book ai didi

arrays - 在 Elasticsearch 中使用嵌套数组更新字段

转载 作者:行者123 更新时间:2023-11-29 02:44:19 26 4
gpt4 key购买 nike

我正在尝试使用数组更新文档中的字段。我想在“产品”字段中添加一个数组。我试过这个:

POST /index/type/1/_update
{
"doc" :{
"products": [
{
"name": "A",
"count": 1
},
{
"name": "B",
"count": 2
},
{
"name": "c",
"count": 3
}
]
}
}

这是我尝试运行代码时得到的错误响应:

{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failed to parse [products]"
}
],
"type": "mapper_parsing_exception",
"reason": "failed to parse [products]",
"caused_by": {
"type": "illegal_state_exception",
"reason": "Can't get text on a START_OBJECT at 1:2073"
}
},
"status": 400
}

有人知道我做错了什么吗?

最佳答案

消息“无法在 START_OBJECT 上获取文本”意味着 Elasticsearch 需要一个“字符串”类型的条目,但您正试图提供一个对象作为输入。

如果您检查 Kibana,您会发现那里存在字段“products”,并且被定义为一个字符串。但是由于您输入的是字典列表,因此应该从一开始就将“产品”字段定义为一个对象(最好在其中包含动态字段)。一个例子是(参见 https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic.html 的完整例子)

    "products": { 
"dynamic": true,
"properties": {}
}

但是,由于您已经拥有索引,因此您无法更改映射,因此您需要删除索引,预先进行映射,然后进行更新。

关于arrays - 在 Elasticsearch 中使用嵌套数组更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873672/

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