我遇到了弹性搜索部分更新问题。尝试更新文档时,如果我在字段中更改任何内容,则会出现class_cast_exception
错误。任何简单的改变音乐节到节日都会导致错误。该错误也没有任何意义,因为该字段的类型没有改变,它仍然是一个字符串。重现错误的步骤如下:
POST /events/event/12345/_update
请求正文:
{
"doc": {
"name": "Festival"
}
}
错误讯息:
{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[s-c772fba1ae02e33d-2][10.244.**.**:****][indices:data/write/update[s]]"
}
],
"type": "class_cast_exception",
"reason": "java.lang.String cannot be cast to java.lang.Number"
},
"status": 500
}
[编辑]:我看了看我的映射,有一些奇怪的事情发生了。我使用数字键作为嵌套元素,看起来像弹性已添加每个键作为映射。
示例文档
{
"name": "Festival",
"meta": {
"artists": {
14: {
"artist": "Common",
"bio": "bio here"
}
}
}
}
映射:
{
"events": {
"aliases": {},
"mappings": {
"event": {
"properties": {
"_id": {
"type": "long"
},
{
"meta": {
"properties": {
"artist": {
"type": "object"
},
"artists": {
"properties": {
"4": {
"properties": {
"_id": {
"type": "long"
}
}
}
}
}
}
}
}
}
}
}
}
}