elasticsearch - Elasticsearch 脚本:添加新数组失败
问题描述
我正在尝试使用无痛脚本将新数组字段添加到文档中,但失败了。
这是要更新的文档
"_source": {
"a": {}
}
我想在 a 下添加一个新数组 b。所以我有这个脚本
{
"script": {
"source": "ctx._source.a.b=[params.id]",
"lang": "painless",
"params": {
"id": "id001"
}
}
}
但我得到以下错误
{
"status": 400,
"error": {
"root_cause": [
{
"reason": "object mapping for [a.b] tried to parse field [null] as object, but found a concrete value",
"type": "mapper_parsing_exception"
}
],
"type": "mapper_parsing_exception",
"reason": "object mapping for [a.b] tried to parse field [null] as object, but found a concrete value"
}
}
我试图创建一个空数组
"ctx._source.a.b=new ArrayList()"
然后将元素附加到数组
"ctx._source.a.b.add(params.id)"
仍然有同样的错误
谁能帮我指出问题所在?非常感谢。
解决方案
找到了根本原因。ab 是在索引映射中定义的,因为我之前定义了它。然后认为该字段已从文档中删除。
推荐阅读
- python - Spyder 2 编辑器中模块的语法亮点
- python - google sheet API batchUpdate在python中返回错误
- python - 回归后预测 NaN
- java - 共享主键但想单独管理/保存实体?
- python - 使用 scipy sqlrep 进行定期插值
- javascript - ngModelChange 和更改事件一起在 IE11 中不起作用
- r - r - reordering of barplot with ggplot2
- json - AWS Lambda 和 API Gateway 上的 Dotnet Core
- amazon-web-services - 在 ECS Docker 中为 Selenium Chrome Hub 动态设置环境变量
- javascript - 如何将包含对象数组的json对象转换为url编码格式