概述
应用场景:
在往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)无法识别的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复