查看“ElasticSearch GEO:地理形状(geo shape)”的源代码
←
ElasticSearch GEO:地理形状(geo shape)
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:ElasticSearch教程]] == 关于 == ES 中存储地理形状的数据类型为: '''geo_shape''' geo_shape支持存储的常用形状数据如下: # 点(point) # 圆形(circle) # 矩形(envelope) # 多边形 (polygon) * “点”作为一种特殊的形状,可以在 geo_shape 中存储。 == 定义'''geo_shape'''类型映射 == 只要将字段类型定义为geo_shape即可。 示例: <syntaxhighlight lang="JSON" highlight=""> PUT /example { "mappings": { "properties": { "location": { "type": "geo_shape" // 定义location字段类型为geo_shape } } } } </syntaxhighlight> === 存储一个“点” === 示例: <syntaxhighlight lang="JSON" highlight=""> POST /example/_doc { "location" : { "type" : "point", // 存储的图形类型为:point,表示存储一个坐标点 "coordinates" : [-77.03653, 38.897676] // 坐标点格式: [经度, 纬度] } } </syntaxhighlight> === 存储一个“圆形” === 示例: <syntaxhighlight lang="JSON" highlight=""> POST /example/_doc { "location" : { "type" : "circle", // 存储的图形类型为: circle, 表示一个圆形 "coordinates" : [101.0, 1.0], // 圆心坐标,格式: [经度, 纬度] "radius" : "100m" // 圆的半径,常用单位: m (米), km (千米) } } </syntaxhighlight> === 存储一个“矩形” === 示例: <syntaxhighlight lang="JSON" highlight=""> POST /example/_doc { "location" : { "type" : "envelope", // 存储的图形类型为: envelope, 表示一个矩形 "coordinates" : [ [100.0, 1.0], // 矩形左上角坐标, 坐标格式: [经度, 纬度] [101.0, 0.0] // 矩形右下角坐标 ] } } </syntaxhighlight> === 存储一个“多边形” === 示例: <syntaxhighlight lang="JSON" highlight=""> POST /example/_doc { "location": { "type": "polygon", // 存储的图形类型为: polygon,表示一个多边形 "coordinates": [ // 支持多个多边形 [ // 第一个多边形,多边形由下面的坐标数组组成。 [100, 0], // 第一个坐标点,坐标格式: [经度, 纬度] [101, 0], [101, 1], [100, 1], [100, 0] // 最后一个坐标点,要跟第一个坐标点相同,这样多边形才能形成闭合 ] ] } } </syntaxhighlight> * 支持'''存储多个多边形数据'''。 *: 如果保存多个多边形:则第一个多边形表示'''外轮廓''',第二个多边形表示'''内轮廓''',这样内外多边形轮廓就组成一个空洞的图形,相当于,在多边形中间挖了个坑。【表示内外轮廓之间的部分】 == 地理形状搜索 == 当索引的字段类型定义为 geo_shape 之后,我们就可以通过 geo_shape 实现图形搜索。 geo_shape 支持的图形搜索类型: # '''intersects''':查询的形状与索引的形状有'''重叠'''(默认), 即图形有'''交集'''则匹配。 # '''disjoint''':查询的形状与索引的形状完全'''不重叠'''。 # '''within''':查询的形状'''包含'''索引的形状。 示例:使用一个矩形去搜索 location 字段值,返回包含在这个矩形范围内的所有文档。 <syntaxhighlight lang="JSON" highlight=""> GET /example/_search { "query":{ "bool": { // 布尔组合查询语句 "must": { "match_all": {} // 这里设置其他查询条件,直接匹配全部文档 }, "filter": { // 地理信息搜索,通常不参与相关性计算,所以使用filter包裹起来 "geo_shape": { // geo_shape搜索语句 "location": { // 图形数据存储在location字段 "shape": { // 设置我们想要通过什么形状去搜索location存储的图形数据 "type": "envelope", // 设置图形类型为envelope,表示矩形,各种图形格式参考下面提示 "coordinates" : [[13.0, 53.0], [14.0, 52.0]] // 设置矩形的坐标 }, "relation": "within" // 设置图形搜索类型,这里设置为包含关系 } } } } } } </syntaxhighlight>
返回至“
ElasticSearch GEO:地理形状(geo shape)
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息