Elasticsearch7.15配置dynamic_templates出现analyzer参数无效警告如何处理
问题根因
Elasticsearch 7.x 对字段类型参数校验逻辑收紧:
analyzer、search_analyzer是仅适用于text分词类型的参数,keyword类型不支持这两个参数,6.x 版本未做严格校验所以可以正常运行,7.x 版本开始弹出警告,8.x 版本会直接报错- 你原本要实现的字符串trim预处理需求,针对
keyword类型应该通过normalizer配置实现,而非自定义analyzer
修复方案
1. 调整settings配置
将原来的自定义analyzer替换为normalizer配置:
settings = { "analysis": { "normalizer": { "my_normalizer": { "type": "custom", "filter": ["trim"] } } } }
normalizer 不需要指定分词器,默认会把整个keyword值作为单个token处理,直接生效预处理规则。
2. 调整mappings动态模板配置
删除analyzer、search_analyzer参数,替换为normalizer参数:
mappings = { "dynamic_templates": [ { "attributes": { "match_mapping_type": "string", "path_match": "attributes.*", "mapping": { "type": "keyword", "normalizer": "my_normalizer" } } }, { "metadata": { "match_mapping_type": "string", "path_match": "metadata.*", "mapping": { "type": "keyword", "normalizer": "my_normalizer" } } } ] }
修复后的配置和原有功能完全一致,写入和查询时会自动trim字符串前后空格,同时完全消除版本升级带来的警告。如果已有存量索引,需要重建索引迁移数据后新配置才会生效。
内容的提问来源于stack exchange,提问作者Gaurav Vichare
相关产品推荐
相关产品推荐

