首页 技术 正文
技术 2022年11月9日
0 收藏 581 点赞 3,404 浏览 3433 个字

地理查询编辑

Elasticsearch支持两种类型的地理数据: geo_point纬度/经度对字段的支持,和 geo_shape领域,支持点、线、圆、多边形、多等。

这组查询:

geo_shape 查询
发现文档与几何图型相交,包含,或与指定的geo-shape不相交。
geo_bounding_box 查询
发现文档与geo-points落入指定的矩形。
geo_distance 查询
发现文档geo-points内指定的中心点的距离。
geo_distance_range 查询
就像 geo_point查询,但是范围是从一个指定的中心点的距离。
geo_polygon 查询
发现文档geo-points内指定的多边形。
geohash_cell 查询
找到的geo-points geohash相交的geohash指定点。

GeoShape查询编辑

看到Geo形状查询

注意: geo_shape类型使用 Spatial4J JTS,这两个都是可选的依赖性。因此您必须添加 Spatial4JJTS到类路径中为了使用这种类型:

  1. <dependency>
  2. <groupId>com.spatial4j</groupId>
  3. <artifactId>spatial4j</artifactId>
  4. <version>0.4.1</version>     <!–1–>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.vividsolutions</groupId>
  8. <artifactId>jts</artifactId>
  9. <version>1.13</version>         <!–2–>
  10. <exclusions>
  11. <exclusion>
  12. <groupId>xerces</groupId>
  13. <artifactId>xercesImpl</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependency>

Elasticsearch java API (23)查询 DSL Geo查询

检查更新Maven中央

Elasticsearch java API (23)查询 DSL Geo查询

检查更新Maven中央

  1. // Import ShapeRelation and ShapeBuilder
  2. import org.elasticsearch.common.geo.ShapeRelation;
  3. import org.elasticsearch.common.geo.builders.ShapeBuilder;
  1. QueryBuilder qb = geoShapeQuery(
  2. “pin.location”,               //1
  3. ShapeBuilder.newMultiPoint()      //2
  4. .point(0, 0)
  5. .point(0, 10)
  6. .point(10, 10)
  7. .point(10, 0)
  8. .point(0, 0),
  9. ShapeRelation.WITHIN);   //3

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

形状

Elasticsearch java API (23)查询 DSL Geo查询

关系可以 ShapeRelation.WITHIN, ShapeRelation.INTERSECTS ShapeRelation.DISJOINT

  1. // Using pre-indexed shapes
  2. QueryBuilder qb = geoShapeQuery(
  3. “pin.location”,        //1
  4. “DEU”,                    //2
  5. “countries”,                //3
  6. ShapeRelation.WITHIN)       //4
  7. .indexedShapeIndex(“shapes”)    //5
  8. .indexedShapePath(“location”);  //6

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

文档的ID包含预先索引的形状。

Elasticsearch java API (23)查询 DSL Geo查询

索引类型预先索引形状在哪里。

Elasticsearch java API (23)查询 DSL Geo查询

关系

Elasticsearch java API (23)查询 DSL Geo查询

预先索引的索引的名称,形状。默认为 形状.

Elasticsearch java API (23)查询 DSL Geo查询

包含预先索引的字段指定为路径的形状。默认为 形状.

地理边界框查询编辑

看到地理边界框查询

  1. QueryBuilder qb = geoBoundingBoxQuery(“pin.location”) //1
  2. .topLeft(40.73, -74.1)                //2
  3. .bottomRight(40.717, -73.99);        //3

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

边界框左上角点

Elasticsearch java API (23)查询 DSL Geo查询

边界框右下角点

地理距离查询编辑

看到地理距离查询

  1. QueryBuilder qb = geoDistanceQuery(“pin.location”)  //1
  2. .point(40, -70)                                 //2
  3. .distance(200, DistanceUnit.KILOMETERS)         //3
  4. .optimizeBbox(“memory”)                         //4
  5. .geoDistance(GeoDistance.ARC);                  //5

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

中心点

Elasticsearch java API (23)查询 DSL Geo查询

距离中心点

Elasticsearch java API (23)查询 DSL Geo查询

优化边界框: memory, indexed none

Elasticsearch java API (23)查询 DSL Geo查询

距离计算模式: GeoDistance.SLOPPY_ARC(默认), GeoDistance.ARC或(更精确,但明显慢)GeoDistance.PLANE(更快,但不准确的长距离和接近两极)

地理距离范围查询编辑

看到地理距离范围查询

  1. QueryBuilder qb = geoDistanceRangeQuery(“pin.location”)      //1
  2. .point(40, -70)                                             //2
  3. .from(“200km”)                                              //3
  4. .to(“400km”)                                                //4
  5. .includeLower(true)                                         //5
  6. .includeUpper(false)                                        //6
  7. .optimizeBbox(“memory”)                                     //7
  8. .geoDistance(GeoDistance.ARC);                              //8

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

中心点

Elasticsearch java API (23)查询 DSL Geo查询

距离中心点开始

Elasticsearch java API (23)查询 DSL Geo查询

结束中心点的距离

Elasticsearch java API (23)查询 DSL Geo查询

包括意味着更低的价值 from gt false gte true

Elasticsearch java API (23)查询 DSL Geo查询

包括上意味着价值 to lt false lte true

Elasticsearch java API (23)查询 DSL Geo查询

优化边界框: memory, indexed none

Elasticsearch java API (23)查询 DSL Geo查询

距离计算模式: GeoDistance.SLOPPY_ARC(默认), GeoDistance.ARC或(更精确,但明显慢)GeoDistance.PLANE(更快,但不准确的长距离和接近两极)

Geo多边形查询编辑

看到Geo多边形查询

  1. QueryBuilder qb = geoPolygonQuery(“pin.location”)    //1
  2. .addPoint(40, -70)                                  //2
  3. .addPoint(30, -80)                                  //3
  4. .addPoint(20, -90);                                 //4

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询Elasticsearch java API (23)查询 DSL Geo查询Elasticsearch java API (23)查询 DSL Geo查询

添加一个文档应落在多边形的点

Geohash细胞查询编辑

看到Geohash细胞查询

  1. QueryBuilder qb = geoHashCellQuery(“pin.location”,  //1
  2. new GeoPoint(13.4080, 52.5186))         //2
  3. .neighbors(true)                            //3
  4. .precision(3);                              //4

Elasticsearch java API (23)查询 DSL Geo查询

Elasticsearch java API (23)查询 DSL Geo查询

点。也可以是一个散列 u30

Elasticsearch java API (23)查询 DSL Geo查询

 neighbors选择过滤提供了可能性的筛选细胞旁边给定的细胞。

Elasticsearch java API (23)查询 DSL Geo查询

精度水平

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,133
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297