如何在弹性搜索中更新字段的现有数据类型?( "No handler for type [text] declared on field [Name]" )



我是Elasticsearch全新的,想将一个现有字段数据类型从"字符串"类型更新为"文本"类型。我尝试过,但最终得到了这个例外: "No handler for type [text] declared on field [Name]"

任何建议,我的Elasticsearch版本 -

{
  "name" : "Tej",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "raiQbq0ySUioBScsptsTzQ",
  "version" : {
    "number" : "2.4.4",
    "build_hash" : "fcbb46dfd45562a9cf00c604b30849a6dec6b017",
    "build_timestamp" : "2017-01-03T11:33:16Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}

索引映射细节 -

{"customer":{"mappings":{"external":{"properties":{"Name":{"type":"string"},"age":{"type":"long"},"doc":{"properties":{"age":{"type":"long"},"name":{"type":"string"}}},"name":{"type":"string"}}}}}}

根据文档 - 我使用以下命令更新现有数据类型

`curl -i -X PUT 
   -H "Content-Type:application/json" 
   -d 
'{
    "external" : {
        "properties" : {
            "Name" : {"type" : "text"}
        }
    }
}
' 
 'http://10.200.14.15:9200/customer/_mapping/external'`

响应

{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "No handler for type [text] declared on field [Name]"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "No handler for type [text] declared on field [Name]"
    },
    "status": 400
}

您选择Elasticsearch 2.4.4的任何原因。而不是5.x?从您的集群的名称来看,这是您的个人...我问的原因是,在5中不再使用字符串值,并且映射也略有不同。

根据个人经验,如果其中有任何数据,则无法更改现有字段的映射。您应该能够使用新值更新映射模板,并应使用新值创建任何新模板。

如果要更改现有字段的类型,则必须使用新的映射创建一个新索引,然后从新的数据中迁移所有数据。根据尺寸,这可能是...

的痛苦

您获得此功能的原因是,在Elasticsearch的2.4版本中不支持"文本"数据类型。

这是受支持的数据类型的完整列表:
https://www.elastic.co/guide/en/elasticsearch/reference/2.4/mapping-types.html

坚持"字符串"数据类型或升级您的elasticsearch。

相关内容

  • 没有找到相关文章

最新更新