地理查询编辑

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>

检查更新Maven中央

检查更新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

形状

关系可以 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

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

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

关系

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

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

地理边界框查询编辑

看到地理边界框查询

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

边界框左上角点

边界框右下角点

地理距离查询编辑

看到地理距离查询

  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

中心点

距离中心点

优化边界框: memory, indexed none

距离计算模式: 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

中心点

距离中心点开始

结束中心点的距离

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

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

优化边界框: memory, indexed none

距离计算模式: 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

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

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

点。也可以是一个散列 u30

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

精度水平

Elasticsearch java API (23)查询 DSL Geo查询的更多相关文章

  1. Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...

  2. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  3. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  4. 第08章 ElasticSearch Java API

    本章内容 使用客户端对象(client object)连接到本地或远程ElasticSearch集群. 逐条或批量索引文档. 更新文档内容. 使用各种ElasticSearch支持的查询方式. 处理E ...

  5. Elasticsearch Java API深入详解

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

  6. [搜索]ElasticSearch Java Api(一) -添加数据创建索引

    转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...

  7. elasticsearch elk最全java api 搜索 聚合、嵌套查询

    目录 一. 一般查询... 2 (一) matchAllQuery(client). 2 (二) matchQuery(client);3 (三) multiMatchQuery(client);3 ...

  8. Elasticsearch Java API 查询

    一.查询的时候,需要建立一个SearchRequestBuilder,这里面将给出对于哪一个index或者type进行查询,并且所有的设置都可以在这里面进行实现,例如模糊查询,范围查询,前缀查询等. ...

  9. 015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询

    一.Joining 多文档查询 joining query 像Elasticsearch这样的分布式系统中执行完整的SQL样式连接非常昂贵.相反,Elasticsearch提供两种形式的连接,旨在水平 ...

随机推荐

  1. DefaultSingletonBeanRegistry

    DefaultSingletonBeanRegistry 这是 DefaultSingletonBeanRegistry 类的体系结构,由一个类一个责任的原则: AliasRegistry : 提供别 ...

  2. datagrid分页 从后端获取数据也很简单

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Datagrid.aspx. ...

  3. 通过命令更新git for windows

    git update-git-for-windows 参考: https://github.com/PanJiaChen/vue-element-admin/issues/24 https://sta ...

  4. 经典递归问题:0,1背包问题 kmp 用遗传算法来解背包问题,hash表,位图法搜索,最长公共子序列

    0,1背包问题:我写笔记风格就是想到哪里写哪里,有很多是旧的也没删除,代码内部可能有很多重复的东西,但是保证能运行出最后效果 '''学点高大上的遗传算法''' '''首先是Np问题的定义: npc:多 ...

  5. Android 在一个程序中启动另一个程序(包名,或者类名)

    http://hi.baidu.com/xiaofanqing/item/6fd724f7c5bb6dce531c26b7 Android 开发有时需要在一个应用中启动另一个应用,比如Launcher ...

  6. 2018.06.29 NOIP模拟 边的处理(分治+dp)

    边的处理(side.cpp) [问题描述] 有一个 n 个点的无向图,给出 m 条边,每条边的信息形如<x,y,c,r><x,y,c,r><x,y,c,r>. 给出 ...

  7. 2018.07.08 NOIP模拟 好数(线段树)

    好数 题目背景 SOURCE:NOIP2016-AHSDFZ T3 题目描述 我们定义一个非负整数是"好数",当且仅当它符合以下条件之一: 1. 这个数是 0 或 1 . 2. 所 ...

  8. 着重基础之—MySql 不能遗忘的索引操作

    着重基础之—MySql 不能遗忘的索引操作 关于MySql索引的基础知识我就不在这里写了,我不太想当信息的搬运工. 技巧分享:Workbench 作为一款专为MySQL设计的ER/数据库建模工具.除了 ...

  9. mysql date_sub用法

    查询一天: select * from table where to_days(column_time) = to_days(now()); select * from table where dat ...

  10. java socket 之UDP编程

    一.概念 在TCP的所有操作中都必须建立可靠的连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外的一种传输协议——UDP,不可靠的连接(这种协议在各种聊天工具中被广泛使用) ...