🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# GeoShape Query(地理形状查询) 过滤文档索引使用**geo_shape**型。 需要**geo_shape**映射。 **geo_shape**查询使用相同的网格表示为**geo_shape**映射到有相交形状文档的查询。它也可使用相同的**PrefixTree**配置为域的映射定义。 该查询支持两种定义查询形状的方法,或者通过提供一个整体形状定义,或者通过引用另一个索引中的形状的名称引用该形状的名称。这两种格式在下面的例子中都有解释。 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-query.html#query-dsl-geo-shape-query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-query.html#query-dsl-geo-shape-query) 译文链接 : [http://www.apachecn.wiki/pages/viewpage.action?pageId=5505150](http://www.apachecn.wiki/pages/viewpage.action?pageId=5505150) 贡献者 : [安迪](/display/~andi) ## Inline Shape Definition(内联形状定义) 和**geo_shape**类型类似,**geo_shape**的过滤器使用GeoJSON来描述形状。 下面是一个例子,就像这样: ![](/download/attachments/5505150/image2016-11-28%200%3A34%3A34.png?version=1&modificationDate=1480267248000&api=v2) 下面的查询将使用Elasticsearch封装的GeoJSON扩展寻找点: ![](/download/attachments/5505150/image2016-11-28%200%3A36%3A52.png?version=1&modificationDate=1480267248000&api=v2) ## Pre-Indexed Shape(预索引形状) 该查询还支持使用已在另一个索引和/或索引类型中已被索引的形状。当你有一个预先定义好的形状列表,这个形状列表用于你的应用程序和你参考使用的一个逻辑名称(例如新西兰),而不是每一次都必须提供他的坐标。在这种情况下,只需要提供: * **`id`** - 包含预索引形状的文档ID。 * **`index` **- 索引的名称,其中预索引形状为:默认形状。 * **`type` **- 索引类型,预索引形状的类。 * **`path` **- 包含预索引形状的指定路径,默认形状。 下面是一个使用了预索引形状过滤的例子: ![](/download/attachments/5505150/image2016-11-28%200%3A51%3A7.png?version=1&modificationDate=1480267248000&api=v2) ## Spatial Relations(空间关系) **geo_shape**策略映射参数确定的空间关系操作符可以用于搜索的时间。以下是可用的空间关系操作符的完整列表: * **`INTERSECTS`** - (默认)返回所有文件的**geo_shape**场相交查询几何。 * **`DISJOINT` **- Return all documents whose geo_shape field has nothing in common with the query geometry. * **`WITHIN` **- 返回**geo_shape**字段查询内几何的所有文档。 * **`CONTAINS` **- 返回的**geo_shape**字段包含查询几何的所有文件。 ## Ignore Unmapped(忽略映射) 当设置**ignore_unmapped**选项为**true**时,将忽略未映射字段,并且该查询将不匹配任何文档。这在当查询可能有不同映射的多索引时是有用的。当设置为**false**(默认值为**false**)时,如果字段没有映射,那这个查询将会抛出异常。