Elasticsearch7重新索引后integer字段返回text类型问题排查
字段类型显示不符的原因分析
1. _source 存储原始数据,与索引字段类型分离
你在查询结果中看到的numerosentenza值为"1105",来自文档的_source字段——它保存的是原索引paganotti_civile中的原始数据。如果原索引里该字段是字符串类型,reindex过程不会自动修改_source内容,只会按照目标索引的映射规则,将数据转换为integer类型存入检索用的索引字段。
简言之:目标索引的numerosentenza确实是integer类型(用于检索匹配),但_source会保留原数据的字符串格式,这属于正常现象,并非字段类型不符。
2. 当前Reindex脚本未处理字段类型转换
如果希望_source里的numerosentenza也同步转为整数类型,你当前的脚本仅修改了文档ID,没有对字段值做类型转换。需要在脚本中显式添加转换逻辑,示例如下:
ctx._id = ctx._source._id; ctx._source.numerosentenza = Integer.parseInt(ctx._source.numerosentenza);
3. 原索引字段类型可能存在混合情况
若原索引paganotti_civile中的numerosentenza字段同时存在数字和字符串类型,reindex时可能出现部分数据无法转换为integer的报错,或触发动态映射生成额外的text字段。可通过以下命令确认原索引的字段映射:
GET paganotti_civile/_mapping/field/numerosentenza
内容的提问来源于stack exchange,提问作者zabitstack
相关产品推荐
相关产品推荐

