Elasticsearch系列(14)Query之地理空间查询

Elasticsearch系列(14)Query之地理空间查询,第1张

Elasticsearch支持两种类型的地理数据:支持经纬度对的geo_point字段和支持点、线、圆、多边形等的geo_shape字段。接下来介绍Elasticsearch提供的地理相关的查询,包括:

geo_bounding_box查询查找地理点位于指定矩形中的文档。
首先,创建一个地理索引文档。

使用geo_bounding_box查询示例如下:

top_left:矩形的左上角位置,值为geo_point类型。
bottom_right:矩形的右下角位置,值为geo_point类型。

geo_point类型可以接受不同输入格式的地理点。

查找地理点位于一个中心点到指定距离范围内的文档。
使用geo_distance查询,中心地理坐标为{"lat" : 40, "lon" : -70},查询半径distance为200km,示例如下:

以下是过滤器上的查询参数:

查找地理点位于指定多边形的文档。
使用geo_polygon查询,设置三个坐标地理点,形成一个三角形,示例如下:

以下是过滤器上的查询参数:

查找与指定的地理形状相交、包含或不相交的地理形状的文档。使用geo_shape类型来过滤索引文档。
geo_shape查询支持两种定义查询形状的方法,一种是提供完整的形状定义,另一种是引用另一个索引中预先索引形状的名称。

与geo_shape类型类似,geo_shape查询使用GeoJSON表示形状。
首先给定以下索引:

使用Elasticsearch的envelope模式,GeoJSON形式来查询地理点,示例如下:

可以使用Kibana中的Maps功能查看查询结果如下所示:

首先有一个预定义的形状列表,并且指定一个逻辑名称来引用它,这样避免了每次都必须提供它们的坐标。在预先索引形状的情况下,只需要提供:

首先预先定义索引形状,示例如下:

根据预先索引形状来查询,示例如下:

geo_shape查询通过设置relation参数来决定在搜索时可以使用哪些空间关系(relation) *** 作符,空间关系(relation)的完整列表如下:
INTERSECTS - (默认值)返回geo_shape字段与查询几何图形相交的所有文档。
DISJOINT - 返回geo_shape字段与查询几何形状没有任何共同之处的所有文档。
WITHIN - 返回geo_shape字段在查询几何图形内的所有文档。
CONTAINS - 返回geo_shape字段包含查询几何图形的所有文档。

用到三个网站:
>用BioPerl我就会~~ 处理序列首选的语言就是Perl嘛 ---------- 以下这个例子可以利用 accesion number 获取一个蛋白质的fasta格式序列(或核苷酸序列)并将它输出到STDOUT: #!/usr/bin/perl -w use strict; use Bio::DB::GenPept; use Bio::DB

(一)申请进度查询网址:

北京签证处提供各种签证申请进度查询,查询网址如下:

>

在前面我简单的介绍了es对地理位置点的相关 *** 作,包括获取多边形内(凸多边形)的点及计算两点之间的距离,或者按照距离的远近排序的简要查询方法,但是假如我们的想要查询落在一个凹多边形内的点,使用 geo_point 类型的就满足不了我们的需求了,这时候es引入了 geo_shape 类型。

geo_shape 支持 GeoJson 和 WKT(Well-Known Text ,==6X以后的版本支持==)格式的形状,
一个典型的 GeoJson 表示的点:

一个典型的用WKT表示的点:

详细介绍 ,基于支持的这些形状,我们可以实现更加复杂的查询,包括多边形(矩形、圆形、多边形等)内的点,多边形的相交,直线等等;

获取一个城市地理范围(不规则)内的坐标点。一个典型的不规则的城市地理位置的坐标形式如下(WKT):

注意的问题

实体类 GeoShapeEntity

转换类 WKTReaderUtils

这样我们可以将WKT形式的坐标信息导入我们的ES中。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10287405.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存