在PUT命令上弹性搜索class_cast_exception

时间:2015-12-30 12:32:46

标签: elasticsearch

我正在执行的命令。它是为了创造一个新客户。请参阅下文,了解我如何在Sense(http://localhost:9200)上使用PUT命令创建客户

 PUT /crud_sample/Customer_Info/1
        {
          "name": "PH"
        }

我得到的错误:

{
       "error": {
          "root_cause": [
             {
                "type": "class_cast_exception",
                "reason": "java.lang.String cannot be cast to java.lang.Number"
             }
          ],
          "type": "class_cast_exception",
          "reason": "java.lang.String cannot be cast to java.lang.Number"
       },
       "status": 500
    }

正在创建的对象的属性和类型。客户类型。

 "properties": { 
            "_id":{
             "type": "long"
            },
            "name":{
              "type": "string",
              "index" : "not_analyzed"
            }
          }

1 个答案:

答案 0 :(得分:1)

问题来自于您在映射中定义了一个名为_id的字段,其中有一个初始下划线,ES不会允许它,因为它与名为{{的默认字段冲突1}}(more info)。您需要删除该字段或将其重命名为_id

您需要擦除索引并使用干净的映射重新创建它,如下所示:

id

然后,您将能够无错误地创建示例文档:

curl -XDELETE localhost:9200/crud_sample

curl -XPUT localhost:9200/crud_sample -d '{
    "mappings": {
        "Customer_Info": {
           "properties": { 
              "id":{
                 "type": "long"
              },
              "name":{
                 "type": "string",
                 "index" : "not_analyzed"
              }
           }
        }
    }
}'