我是靠谱客的博主 简单眼神,最近开发中收集的这篇文章主要介绍解决Elasticesearch中传输经纬度坐标(geo-point)无法识别的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

应用场景:


在往Elasticesearch中传输数据的过程中,后台人员无法获取经纬度值,后来在官方文档中查到:

地理坐标点(geo-point)是指地球表面可以用经纬度描述的一个点。地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中。

地理坐标点不能被动态映射(dynamic mapping)自动检测,而是需要显式声明对应字段类型为geo_point


这也就是说,如果不对经纬度的类型手动映射,系统是无法识别的,只能以默认的string类型来识别,这样根本无法实现经纬度本来的特性。那如何对经纬度进行手动映射呢?


mapping映射:


官方文档给出的方式是:

PUT /attractions
{
"mappings": {
"restaurant": {
"properties": {
"name": {
"type": "string"
},
"location": {
"type": "geo_point"
}
}
}
}
}

我习惯在浏览器插件中直接执行这条脚本命令


这里补充一下put 后面和mapping下面的名称都代表啥意思,具体参见ES中文官方文档https://es.xiaoleilu.com/010_Intro/25_Tutorial_Indexing.html


通过数据浏览,可以确认已经mapping成功,只是现在并没有导入数据,所以列表为空



插入数据


接下来可以传入一个经纬度,看看是否已经显示为geo_point格式类型

PUT /attractions/restaurant/1
{
"name":
"传入一个经纬度数据",
"location": "40.715, -74.011"
}



在Kibana中确认


先建一个同名称的索引目录


确认location字段类型是否为geo_point 类型


确认无误!至此mapping才算成功

最后

以上就是简单眼神为你收集整理的解决Elasticesearch中传输经纬度坐标(geo-point)无法识别的问题的全部内容,希望文章能够帮你解决解决Elasticesearch中传输经纬度坐标(geo-point)无法识别的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部