前言
保存经纬度、地理位置可用字段类型geo_point定义location字段、还有GeoHash类型
ES提供了三种不同的索引和数据展现格式
ES提供了三种不同的索引和数据展现格式
(1)对象:
{
“location”: {
“lon”: 127.25456,
“lat”: 25.236
},
“id”: “10001”
}
(2)数组:
{
“location”: [
127.25456,
25.236
],
“id”: “10001”}
(3)字符串
{
“location”: “25.236,127.25456”,
“id”: “10001”
}
//对应的代码查询:
QueryBuilders.geoDistanceQuery("字段").point(56.3, 43.12).distance(10,DistanceUnit.KIOMETERS);
//2.经纬度查询的各种形式:
//2.1 圆形区域经纬度: QueryBuilders.geoDistanceQuery("location").point(lat,lon).distance(rad,DistanceUnit.METERS);
//2.2 矩形
QueryBuilders.geoBoundingBoxQuery("location").setCorners(top,left,bottom,right);
//2.3 多边形
list.add(new GeoPoint(lat,lon));
QueryBuilders.geoPolygonQuery("location",list);
注意
使用字符串存储时,顺序是“纬度,经度”,使用数组存储时,顺序是“经度,纬度”。