Elasticsearch java API (23)查询 DSL Geo查询
地理查询编辑
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,这两个都是可选的依赖性。因此您必须添加 Spatial4J和JTS到类路径中为了使用这种类型:
- <dependency>
- <groupId>com.spatial4j</groupId>
- <artifactId>spatial4j</artifactId>
- <version>0.4.1</version> <!--1-->
- </dependency>
- <dependency>
- <groupId>com.vividsolutions</groupId>
- <artifactId>jts</artifactId>
- <version>1.13</version> <!--2-->
- <exclusions>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
|
|
检查更新Maven中央 |
|
|
检查更新Maven中央 |
- // Import ShapeRelation and ShapeBuilder
- import org.elasticsearch.common.geo.ShapeRelation;
- import org.elasticsearch.common.geo.builders.ShapeBuilder;
- QueryBuilder qb = geoShapeQuery(
- "pin.location", //1
- ShapeBuilder.newMultiPoint() //2
- .point(0, 0)
- .point(0, 10)
- .point(10, 10)
- .point(10, 0)
- .point(0, 0),
- ShapeRelation.WITHIN); //3
|
|
场 |
|
|
形状 |
|
|
关系可以 |
- // Using pre-indexed shapes
- QueryBuilder qb = geoShapeQuery(
- "pin.location", //1
- "DEU", //2
- "countries", //3
- ShapeRelation.WITHIN) //4
- .indexedShapeIndex("shapes") //5
- .indexedShapePath("location"); //6
|
|
场 |
|
|
文档的ID包含预先索引的形状。 |
|
|
索引类型预先索引形状在哪里。 |
|
|
关系 |
|
|
预先索引的索引的名称,形状。默认为 形状. |
|
|
包含预先索引的字段指定为路径的形状。默认为 形状. |
地理边界框查询编辑
看到地理边界框查询
- QueryBuilder qb = geoBoundingBoxQuery("pin.location") //1
- .topLeft(40.73, -74.1) //2
- .bottomRight(40.717, -73.99); //3
|
|
场 |
|
|
边界框左上角点 |
|
|
边界框右下角点 |
- QueryBuilder qb = geoDistanceQuery("pin.location") //1
- .point(40, -70) //2
- .distance(200, DistanceUnit.KILOMETERS) //3
- .optimizeBbox("memory") //4
- .geoDistance(GeoDistance.ARC); //5
|
|
场 |
|
|
中心点 |
|
|
距离中心点 |
|
|
优化边界框: |
|
|
距离计算模式: |
- QueryBuilder qb = geoDistanceRangeQuery("pin.location") //1
- .point(40, -70) //2
- .from("200km") //3
- .to("400km") //4
- .includeLower(true) //5
- .includeUpper(false) //6
- .optimizeBbox("memory") //7
- .geoDistance(GeoDistance.ARC); //8
|
|
场 |
|
|
中心点 |
|
|
距离中心点开始 |
|
|
结束中心点的距离 |
|
|
包括意味着更低的价值 |
|
|
包括上意味着价值 |
|
|
优化边界框: |
|
|
距离计算模式: |
- QueryBuilder qb = geoPolygonQuery("pin.location") //1
- .addPoint(40, -70) //2
- .addPoint(30, -80) //3
- .addPoint(20, -90); //4
|
|
场 |
|
|
添加一个文档应落在多边形的点 |
Geohash细胞查询编辑
- QueryBuilder qb = geoHashCellQuery("pin.location", //1
- new GeoPoint(13.4080, 52.5186)) //2
- .neighbors(true) //3
- .precision(3); //4
|
|
场 |
|
|
点。也可以是一个散列 |
|
|
的 |
|
|
精度水平 |
Elasticsearch java API (23)查询 DSL Geo查询的更多相关文章
- Elasticsearch java api 常用查询方法QueryBuilder构造举例
转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...
- Elasticsearch java api 基本搜索部分详解
文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...
- Elasticsearch Java API 很全的整理
Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...
- 第08章 ElasticSearch Java API
本章内容 使用客户端对象(client object)连接到本地或远程ElasticSearch集群. 逐条或批量索引文档. 更新文档内容. 使用各种ElasticSearch支持的查询方式. 处理E ...
- Elasticsearch Java API深入详解
0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...
- [搜索]ElasticSearch Java Api(一) -添加数据创建索引
转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...
- elasticsearch elk最全java api 搜索 聚合、嵌套查询
目录 一. 一般查询... 2 (一) matchAllQuery(client). 2 (二) matchQuery(client);3 (三) multiMatchQuery(client);3 ...
- Elasticsearch Java API 查询
一.查询的时候,需要建立一个SearchRequestBuilder,这里面将给出对于哪一个index或者type进行查询,并且所有的设置都可以在这里面进行实现,例如模糊查询,范围查询,前缀查询等. ...
- 015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询
一.Joining 多文档查询 joining query 像Elasticsearch这样的分布式系统中执行完整的SQL样式连接非常昂贵.相反,Elasticsearch提供两种形式的连接,旨在水平 ...
随机推荐
- mvn 使用
简介 本文将介绍基于 Apache Maven 3 的项目构建的基本概念和方法.Maven 是一套标准的项目构建和管理工具,使用统一规范的脚本进行项目构建,简单易用,摒弃了 Ant 中繁琐的构建元素, ...
- 带你认识那些App可靠性设计
可靠性是软件一个重要的质量属性,它关注的是软件功能持续的可用性,以及出现故障之后是否能够容错,是否能快速的恢复使用. 可靠性六条基本准则 1.故障应在第一时间被检测和感知: 2.能避免的故障都不应该发 ...
- python数据类型4
一浮点数 什么叫做浮点数:浮点数就相当于小数,但是浮点数不包括无限循环又不重复的小数. 小数分为 有限小数和无限小数 无限小数又分为 无限循环小数和无限不循环小数 而 浮点数就是有限小数和无限循环小数 ...
- 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码
- 2018.10.18 NOIP训练 01矩阵(组合数学)
传送门 组合数学好题. 题目要求输出的结果成功把概率转化成了种类数. 本来可以枚举统计最小值为iii时的概率. 现在只需要统计最小值为iii时的方案数,每一行有不少于iii个1的方案数. 显然一行选i ...
- 2018.09.11 poj2976Dropping tests(01分数规划)
传送门 01分数规划板子题啊. 就是简单变形移项就行了. 显然 ∑i=1na[i]∑i=1nb[i]≤k" role="presentation" style=" ...
- redhat 6用yum方式安装nginx
前提条件:如果发生了没有注册redhat账号造成没有权限使用yum的情况下,可以参考:http://www.cnblogs.com/boshen-hzb/p/6080431.html 1.cd /et ...
- noexcept(c++11)
1.概念 1)c++中的异常处理是在运行时而不是编译时检测的,为了实现运行时检测,编译器可能会创建额外的异常处理代码,然而这会妨碍程序优化 2)noexcept说明符:若修饰函数(紧跟在参数列表后面) ...
- 20155216 2016-2017-2 《Java程序设计》第六周学习总结
20155216 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 流与IO 将数据从来源中取出,可以使用输入串流:将数据写入目的地,可以使用输出串流,串流是有 ...
- Spark-1.2.2部署
1.安装Scala 1.1解压和安装 在Scala官网http://www.scala-lang.org/download/下载Scala安装包,然后解压.(注:JDK的版本最好是1.7及以上,否则S ...