ES/Kibana7.13已映射geo_point字段提示未索引无法搜索如何解决
解决步骤
- 首先确认实际索引的映射是否生效,不要仅校验索引模板,直接执行以下请求查看目标索引的映射配置:
搜索GET <你的实际索引名>/_mappingdstGeoLocation、srcGeoLocation字段,确认字段类型确实为geo_point,且未额外配置"index": false属性。如果索引是模板创建前生成的,模板配置不会对存量索引生效,需要手动更新存量索引映射后重建Kibana索引模式。 - 确认
geo_point字段存储格式符合规范:ES支持的geo_point格式包括"lat,lon"字符串、[lon,lat]数组、{"lat": xx, "lon": xx}对象三种,检查写入的默认值0,0是否为标准字符串格式,没有多余空格或格式错误,可以执行以下请求查看单条数据的实际存储格式:GET <你的实际索引名>/_search?size=1 - 排查Kibana索引模式的匹配范围:如果你的索引模式匹配了多个索引,其中部分索引不存在这两个geo字段,Kibana合并所有匹配索引的字段属性时,会将字段标记为未索引。可以调整索引模式的匹配规则,仅覆盖包含这两个geo字段的索引,或给缺失字段的索引添加对应
geo_point类型映射后,再重建索引模式。 - 清理Kibana缓存:7.13版本无手动刷新索引模式的功能,确认ES侧映射、数据都无问题后,清理浏览器缓存后重启Kibana服务,再重新查看索引模式中字段的
searchable属性是否变为正常状态。 - 兜底验证:可以直接在Dev Tools执行geo查询验证ES侧是否可正常搜索该字段,如果查询可正常返回结果,说明问题仅出在Kibana侧字段识别,无需调整ES侧配置:
GET <你的实际索引名>/_search { "query": { "geo_distance": { "distance": "1km", "dstGeoLocation": { "lat": 0, "lon": 0 } } } }
内容的提问来源于stack exchange,提问作者blueren
相关产品推荐
相关产品推荐

