将 Elasticsearch 从 5.5.1 降级到 2.1.0 mapper_parsing_exception

Downgrading Elasticsearch from 5.5.1 to 2.1.0 mapper_parsing_exception

我遇到了 elasticsearch 的映射问题:

我在本地机器上使用 ES 5.5.1 并在本地测试我的 python 程序,一切正常(可以创建索引、索引数据等)。现在我想将我的应用程序部署到 运行 ES 版本 2.1.0.

的云铸造解决方案

所以我得到了这个 mapper_parsing_exception:

{u'status': 400, u'error': {u'caused_by': {u'reason': u'No handler for type [text] declared on field [first_seen]', u'type': u'mapper_parsing_exception'}, u'root_cause': [{u'reason': u'No handler for type [text] declared on field [first_seen]', u'type': u'mapper_parsing_exception'}], u'type': u'mapper_parsing_exception', u'reason': u'Failed to parse mapping [generated]: No handler for type [text] declared on field [first_seen]'}}

在 Elastic 网站上,版本 2.x 不支持 "text" 和 "keyword" 数据类型。相反,他们会尝试将 "keyword"/"text" 降级为 "string".

我用的是我本地ES实例创建的映射,因为云端的ELK服务实例动态映射存在一些问题。但是这个映射当然充满了 "text" 和 "keyword" 数据类型。

我能否将所有 "text" 和 "keyword" 数据类型替换为 "string" 类型,或者是否有不同的解决方案可用?

感谢您的帮助! 格瑞兹

编辑:

我只是将关键字数据类型转换为字符串数据类型,并向这些字段添加 "index": "not_analyzed" 以获得与以前相同的功能。我认为我的云 ES 实例上的动态映射不能正常工作,但我现在看到,我实际上工作得很好,我只需要进行一些小的手动映射调整。

不仅是string类型,你还得配置一个字段是否分析(否则得不到关键词功能)