弹性搜索部分更新

时间:2016-06-13 05:04:28

标签: python elasticsearch

我遇到了弹性搜索部分更新问题。尝试更新文档时,如果我在字段中更改任何内容,则会出现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"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

0 个答案:

没有答案