- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
矢量瓦片搜索 API
编辑矢量瓦片搜索 API
编辑搜索矢量瓦片中的地理空间值。以二进制 Mapbox 矢量瓦片 的形式返回结果。
resp = client.search_mvt( index="my-index", field="my-geo-field", zoom="15", x="5271", y="12710", ) print(resp)
const response = await client.searchMvt({ index: "my-index", field: "my-geo-field", zoom: 15, x: 5271, y: 12710, }); console.log(response);
GET my-index/_mvt/my-geo-field/15/5271/12710
前提条件
编辑- 在使用此 API 之前,您应该熟悉 Mapbox 矢量瓦片规范。
- 如果启用了 Elasticsearch 安全功能,您必须具有目标数据流、索引或别名的
read
索引权限。对于跨集群搜索,请参阅 远程集群。
路径参数
编辑-
<target>
-
(必需,字符串) 要搜索的数据流、索引或别名的逗号分隔列表。支持通配符 (
*
)。要搜索所有数据流和索引,请省略此参数或使用*
或_all
。要搜索远程集群,请使用
<cluster>:<target>
语法。请参阅 跨集群搜索。 -
<field>
-
(必需,字符串) 包含要返回的地理空间值的字段。必须是
geo_point
或geo_shape
字段。该字段必须启用 doc values。不能是嵌套字段。矢量瓦片本身不支持几何图形集合。对于
geo_shape
字段中的geometrycollection
值,API 为集合的每个元素返回一个hits
层要素。此行为可能会在未来的版本中更改。 -
<zoom>
- (必需,整数) 要搜索的矢量瓦片的缩放级别。接受
0
-29
。 -
<x>
- (必需,整数) 要搜索的矢量瓦片的 X 坐标。
-
<y>
- (必需,整数) 要搜索的矢量瓦片的 Y 坐标。
描述
编辑在内部,Elasticsearch 将矢量瓦片搜索 API 请求转换为包含以下内容的 搜索
- 一个关于
<field>
的geo_bounding_box
查询。该查询使用<zoom>/<x>/<y>
瓦片作为边界框。 - 一个关于
<field>
的geotile_grid
或geohex_grid
聚合。grid_agg
参数确定聚合类型。聚合使用<zoom>/<x>/<y>
瓦片作为边界框。 - 可选地,一个关于
<field>
的geo_bounds
聚合。只有当exact_bounds
参数为true
时,搜索才包含此聚合。 - 如果可选参数
with_labels
为 true,则内部搜索将包含一个动态运行时字段,该字段调用几何 doc 值的getLabelPosition
函数。这使得能够生成包含建议几何标签的新点要素,例如,多边形将只有一个标签。
例如,Elasticsearch 可以将 grid_agg
参数为 geotile
且 exact_bounds
参数为 true
的矢量瓦片搜索 API 请求转换为以下搜索
resp = client.search( index="my-index", size=10000, query={ "geo_bounding_box": { "my-geo-field": { "top_left": { "lat": -40.979898069620134, "lon": -45 }, "bottom_right": { "lat": -66.51326044311186, "lon": 0 } } } }, aggregations={ "grid": { "geotile_grid": { "field": "my-geo-field", "precision": 11, "size": 65536, "bounds": { "top_left": { "lat": -40.979898069620134, "lon": -45 }, "bottom_right": { "lat": -66.51326044311186, "lon": 0 } } } }, "bounds": { "geo_bounds": { "field": "my-geo-field", "wrap_longitude": False } } }, ) print(resp)
const response = await client.search({ index: "my-index", size: 10000, query: { geo_bounding_box: { "my-geo-field": { top_left: { lat: -40.979898069620134, lon: -45, }, bottom_right: { lat: -66.51326044311186, lon: 0, }, }, }, }, aggregations: { grid: { geotile_grid: { field: "my-geo-field", precision: 11, size: 65536, bounds: { top_left: { lat: -40.979898069620134, lon: -45, }, bottom_right: { lat: -66.51326044311186, lon: 0, }, }, }, }, bounds: { geo_bounds: { field: "my-geo-field", wrap_longitude: false, }, }, }, }); console.log(response);
GET my-index/_search { "size": 10000, "query": { "geo_bounding_box": { "my-geo-field": { "top_left": { "lat": -40.979898069620134, "lon": -45 }, "bottom_right": { "lat": -66.51326044311186, "lon": 0 } } } }, "aggregations": { "grid": { "geotile_grid": { "field": "my-geo-field", "precision": 11, "size": 65536, "bounds": { "top_left": { "lat": -40.979898069620134, "lon": -45 }, "bottom_right": { "lat": -66.51326044311186, "lon": 0 } } } }, "bounds": { "geo_bounds": { "field": "my-geo-field", "wrap_longitude": false } } } }
API 以二进制 Mapbox 矢量瓦片 的形式返回结果。Mapbox 矢量瓦片被编码为 Google Protobufs (PBF)。默认情况下,瓦片包含三个图层
- 一个
hits
图层,其中包含与geo_bounding_box
查询匹配的每个<field>
值的要素。 - 一个
aggs
图层,其中包含geotile_grid
或geohex_grid
的每个单元格的要素。该图层仅包含具有匹配数据的单元格的要素。 -
一个
meta
图层,其中包含- 一个包含边界框的要素。默认情况下,这是瓦片的边界框。
- 关于
geotile_grid
或geohex_grid
的任何子聚合的值范围。 - 搜索的元数据。
API 仅返回可以在其缩放级别上显示的要素。例如,如果一个多边形要素在其缩放级别上没有面积,则 API 会省略它。
API 以 UTF-8 编码的 JSON 形式返回错误。
查询参数
编辑您可以为此 API 指定多个选项,作为查询参数或请求主体参数。如果您同时指定这两个参数,则查询参数优先。
-
exact_bounds
-
(可选,布尔值) 如果
false
,则meta
图层的要素是瓦片的边界框。默认为false
。如果
true
,则meta
图层的要素是geo_bounds
聚合产生的边界框。该聚合对与<zoom>/<x>/<y>
瓦片相交且wrap_longitude
设置为false
的<field>
值运行。生成的边界框可能大于矢量瓦片。
-
extent
- (可选,整数) 瓦片一边的像素大小。矢量瓦片是边长相等的正方形。默认为
4096
。
-
buffer
- (可选,整数) 瓦片外部裁剪缓冲区的像素大小。这允许渲染器避免来自超出瓦片范围的几何图形的轮廓伪影。默认为
5
。
-
grid_agg
-
(可选,字符串) 用于为
<field>
创建网格的聚合。grid_agg
的有效值-
geotile
(默认) -
geotile_grid
聚合。 -
geohex
-
geohex_grid
聚合。
-
-
grid_precision
-
(可选,整数)
grid_agg
中单元格的精度级别。接受0
-8
。默认为8
。如果0
,则结果不包含aggs
图层。geotile
的网格精度对于
grid_agg
为geotile
的情况,您可以使用aggs
图层中的单元格作为较低缩放级别的瓦片。grid_precision
表示可通过这些单元格获得的额外缩放级别。最终精度计算如下<zoom> + grid_precision
例如,如果
<zoom>
为7
且grid_precision
为8
,则geotile_grid
聚合将使用15
的精度。最大最终精度为29
。grid_precision
还确定网格的单元格数量,如下所示(2^grid_precision) x (2^grid_precision)
例如,值
8
将瓦片划分为 256 x 256 个单元格的网格。aggs
图层仅包含具有匹配数据的单元格的要素。geohex
的网格精度对于
grid_agg
为geohex
的情况,Elasticsearch 使用<zoom>
和grid_precision
计算最终精度,如下所示<zoom> + grid_precision
此精度确定
geohex
聚合产生的六边形单元的 H3 分辨率。下表映射了每个精度的 H3 分辨率。例如,如果
<zoom>
为3
且grid_precision
为3
,则精度为6
。在精度为6
时,六边形单元的 H3 分辨率为2
。如果<zoom>
为3
且grid_precision
为4
,则精度为7
。在精度为7
时,六边形单元的 H3 分辨率为3
。精度 唯一瓦片箱 H3 分辨率 唯一六边形箱 比例 1
4
0
122
30.5
2
16
0
122
7.625
3
64
1
842
13.15625
4
256
1
842
3.2890625
5
1024
2
5882
5.744140625
6
4096
2
5882
1.436035156
7
16384
3
41162
2.512329102
8
65536
3
41162
0.6280822754
9
262144
4
288122
1.099098206
10
1048576
4
288122
0.2747745514
11
4194304
5
2016842
0.4808526039
12
16777216
6
14117882
0.8414913416
13
67108864
6
14117882
0.2103728354
14
268435456
7
98825162
0.3681524172
15
1073741824
8
691776122
0.644266719
16
4294967296
8
691776122
0.1610666797
17
17179869184
9
4842432842
0.2818666889
18
68719476736
10
33897029882
0.4932667053
19
274877906944
11
237279209162
0.8632167343
20
1099511627776
11
237279209162
0.2158041836
21
4398046511104
12
1660954464122
0.3776573213
22
17592186044416
13
11626681248842
0.6609003122
23
70368744177664
13
11626681248842
0.165225078
24
281474976710656
14
81386768741882
0.2891438866
25
1125899906842620
15
569707381193162
0.5060018015
26
4503599627370500
15
569707381193162
0.1265004504
27
18014398509482000
15
569707381193162
0.03162511259
28
72057594037927900
15
569707381193162
0.007906278149
29
288230376151712000
15
569707381193162
0.001976569537
六边形单元在矢量瓦片上并非完美对齐。某些单元格可能与多个矢量瓦片相交。为了计算每个精度的 H3 分辨率,Elasticsearch 将每个分辨率的六边形箱的平均密度与每个缩放级别的瓦片箱的平均密度进行比较。Elasticsearch 使用最接近相应
geotile
密度的 H3 分辨率。
-
grid_type
-
(可选,字符串) 确定
aggs
图层中要素的几何图形类型。在aggs
图层中,每个要素表示网格中的一个单元格。grid_type
的有效值-
grid
(默认) - 每个要素都是单元格几何图形的
Polygon
。对于grid_agg
为geotile
的情况,要素是单元格的边界框。对于grid_agg
为geohex
的情况,要素是六边形单元的边界。 -
point
- 每个要素都是单元格质心的
Point
。 -
centroid
- 每个要素都是单元格内数据的质心的
Point
。对于复杂的几何图形,实际质心可能在单元格之外。在这些情况下,要素将设置为单元格内部最接近质心的点。
-
-
size
- (可选,整数) 要在
hits
图层中返回的最大要素数。接受0
-10000
。默认为10000
。如果0
,则结果不包含hits
图层。
-
track_total_hits
-
(可选,整数或布尔值) 准确计数与查询匹配的命中数。默认为
10000
。如果
true
,则以牺牲一些性能为代价返回确切的命中数。如果false
,则响应不包括与查询匹配的命中总数。
请求主体
编辑-
aggs
-
(可选,聚合对象)
grid_agg
的子聚合。支持以下聚合类型:-
avg
-
boxplot
-
cardinality
-
extended stats
-
max
-
median absolute deviation
-
min
-
percentile
-
percentile-rank
-
stats
-
sum
-
聚合名称不能以
_mvt_
开头。_mvt_
前缀保留用于内部聚合。
-
-
exact_bounds
-
(可选,布尔值) 如果
false
,则meta
图层的要素是瓦片的边界框。默认为false
。如果
true
,则meta
图层的要素是geo_bounds
聚合产生的边界框。该聚合对与<zoom>/<x>/<y>
瓦片相交且wrap_longitude
设置为false
的<field>
值运行。生成的边界框可能大于矢量瓦片。 -
extent
- (可选,整数) 瓦片一边的像素大小。矢量瓦片是边长相等的正方形。默认为
4096
。 -
buffer
- (可选,整数) 瓦片外部裁剪缓冲区的像素大小。这允许渲染器避免来自超出瓦片范围的几何图形的轮廓伪影。默认为
5
。 -
fields
-
(可选,字符串和对象的数组)要在
hits
层中返回的字段。支持通配符 (*
)。此参数不支持具有数组值的字段。具有数组值的字段可能会返回不一致的结果。
您可以在数组中将字段指定为字符串或对象。
fields
对象的属性-
field
- (必需,字符串)要返回的字段。支持通配符 (
*
)。 -
format
-
(可选,字符串)日期和地理空间字段的格式。其他字段数据类型不支持此参数。
date
和date_nanos
字段接受日期格式。geo_point
和geo_shape
字段接受-
geojson
(默认) - GeoJSON
-
wkt
- Well Known Text(众所周知的文本)
-
mvt(<spec>)
-
二进制Mapbox 矢量瓦片。该 API 以 base64 编码的字符串形式返回瓦片。
<spec>
的格式为<zoom>/<x>/<y>
,带有两个可选后缀:@<extent>
和/或:<buffer>
。例如,2/0/1
或2/0/1@4096:5
。mvt
参数-
<zoom>
- (必需,整数)瓦片的缩放级别。接受
0
-29
。 -
<x>
- (必需,整数)瓦片的 X 坐标。
-
<y>
- (必需,整数)瓦片的 Y 坐标。
-
<extent>
- (可选,整数) 瓦片一边的像素大小。矢量瓦片是边长相等的正方形。默认为
4096
。 -
<buffer>
- (可选,整数) 瓦片外部裁剪缓冲区的像素大小。这允许渲染器避免来自超出瓦片范围的几何图形的轮廓伪影。默认为
5
。
-
-
-
-
grid_agg
-
(可选,字符串) 用于为
<field>
创建网格的聚合。grid_agg
的有效值-
geotile
(默认) -
geotile_grid
聚合。 -
geohex
-
geohex_grid
聚合。
-
-
grid_precision
-
(可选,整数)
grid_agg
中单元格的精度级别。接受0
-8
。默认为8
。如果0
,则结果不包含aggs
图层。geotile
的网格精度对于
grid_agg
为geotile
的情况,您可以使用aggs
图层中的单元格作为较低缩放级别的瓦片。grid_precision
表示可通过这些单元格获得的额外缩放级别。最终精度计算如下<zoom> + grid_precision
例如,如果
<zoom>
为7
且grid_precision
为8
,则geotile_grid
聚合将使用15
的精度。最大最终精度为29
。grid_precision
还确定网格的单元格数量,如下所示(2^grid_precision) x (2^grid_precision)
例如,值
8
将瓦片划分为 256 x 256 个单元格的网格。aggs
图层仅包含具有匹配数据的单元格的要素。geohex
的网格精度对于
grid_agg
为geohex
的情况,Elasticsearch 使用<zoom>
和grid_precision
计算最终精度,如下所示<zoom> + grid_precision
此精度确定
geohex
聚合产生的六边形单元的 H3 分辨率。下表映射了每个精度的 H3 分辨率。例如,如果
<zoom>
为3
且grid_precision
为3
,则精度为6
。在精度为6
时,六边形单元的 H3 分辨率为2
。如果<zoom>
为3
且grid_precision
为4
,则精度为7
。在精度为7
时,六边形单元的 H3 分辨率为3
。精度 唯一瓦片箱 H3 分辨率 唯一六边形箱 比例 1
4
0
122
30.5
2
16
0
122
7.625
3
64
1
842
13.15625
4
256
1
842
3.2890625
5
1024
2
5882
5.744140625
6
4096
2
5882
1.436035156
7
16384
3
41162
2.512329102
8
65536
3
41162
0.6280822754
9
262144
4
288122
1.099098206
10
1048576
4
288122
0.2747745514
11
4194304
5
2016842
0.4808526039
12
16777216
6
14117882
0.8414913416
13
67108864
6
14117882
0.2103728354
14
268435456
7
98825162
0.3681524172
15
1073741824
8
691776122
0.644266719
16
4294967296
8
691776122
0.1610666797
17
17179869184
9
4842432842
0.2818666889
18
68719476736
10
33897029882
0.4932667053
19
274877906944
11
237279209162
0.8632167343
20
1099511627776
11
237279209162
0.2158041836
21
4398046511104
12
1660954464122
0.3776573213
22
17592186044416
13
11626681248842
0.6609003122
23
70368744177664
13
11626681248842
0.165225078
24
281474976710656
14
81386768741882
0.2891438866
25
1125899906842620
15
569707381193162
0.5060018015
26
4503599627370500
15
569707381193162
0.1265004504
27
18014398509482000
15
569707381193162
0.03162511259
28
72057594037927900
15
569707381193162
0.007906278149
29
288230376151712000
15
569707381193162
0.001976569537
六边形单元在矢量瓦片上并非完美对齐。某些单元格可能与多个矢量瓦片相交。为了计算每个精度的 H3 分辨率,Elasticsearch 将每个分辨率的六边形箱的平均密度与每个缩放级别的瓦片箱的平均密度进行比较。Elasticsearch 使用最接近相应
geotile
密度的 H3 分辨率。 -
grid_type
-
(可选,字符串) 确定
aggs
图层中要素的几何图形类型。在aggs
图层中,每个要素表示网格中的一个单元格。grid_type
的有效值-
grid
(默认) - 每个要素都是单元格几何图形的
Polygon
。对于grid_agg
为geotile
的情况,要素是单元格的边界框。对于grid_agg
为geohex
的情况,要素是六边形单元的边界。 -
point
- 每个要素都是单元格质心的
Point
。 -
centroid
- 每个要素都是单元格内数据的质心的
Point
。对于复杂的几何图形,实际质心可能在单元格之外。在这些情况下,要素将设置为单元格内部最接近质心的点。
-
-
query
- (可选,对象)用于过滤搜索文档的 查询 DSL。
-
runtime_mappings
-
(可选,对象的对象)在搜索请求中定义一个或多个运行时字段。这些字段优先于具有相同名称的映射字段。
runtime_mappings
对象的属性-
<field-name>
-
(必需,对象)运行时字段的配置。键是字段名称。
<field-name>
的属性-
type
-
(必需,字符串)字段类型,可以是以下任何一种:
-
boolean
-
composite
-
date
-
double
-
geo_point
-
ip
-
keyword
-
long
-
lookup
-
-
script
-
(可选,字符串)在查询时执行的 Painless 脚本。该脚本可以访问文档的整个上下文,包括原始的
_source
和任何映射的字段及其值。此脚本必须包含
emit
以返回计算值。例如"script": "emit(doc['@timestamp'].value.dayOfWeekEnum.toString())"
-
-
-
size
- (可选,整数) 要在
hits
图层中返回的最大要素数。接受0
-10000
。默认为10000
。如果0
,则结果不包含hits
图层。 -
sort
-
(可选,排序对象的数组)对
hits
层中的特征进行排序。默认情况下,API 会为每个特征计算一个边界框。它根据此框的对角线长度对特征进行排序,从最长到最短。
-
track_total_hits
-
(可选,整数或布尔值) 准确计数与查询匹配的命中数。默认为
10000
。如果
true
,则以牺牲一些性能为代价返回确切的命中数。如果false
,则响应不包括与查询匹配的命中总数。 -
with_labels
-
(可选,布尔值) 如果为 true,则 hits 和 aggs 图层将包含额外的点要素,表示原始要素的建议标签位置。
原始特征的所有属性也将被复制到新的标签特征中。此外,新的特征将使用标签
_mvt_label_position
来区分。
响应
编辑返回的矢量瓦片包含以下数据:
-
hits
-
(对象)包含
geo_bounding_box
查询结果的图层。hits
的属性-
extent
- (整数)瓦片一侧的大小,以像素为单位。矢量瓦片是等边正方形。
-
version
- (整数)Mapbox 矢量瓦片规范的主要版本号。
-
features
-
(对象数组)特征数组。包含与
geo_bounding_box
查询匹配的每个<field>
值的特征。features
对象的属性-
geometry
-
(对象)特征的几何形状。
geometry
的属性-
type
-
(字符串)特征的几何类型。有效值为:
-
UNKNOWN
-
POINT
-
LINESTRING
-
POLYGON
-
-
coordinates
- (整数数组或数组的数组)特征的瓦片坐标。
-
-
properties
-
(对象)特征的属性。
properties
的属性-
_id
- (字符串)特征的文档的
_id
。 -
_index
- (字符串)特征文档的索引名称。
-
<field>
- 字段值。仅为
fields
参数中的字段返回。
-
-
type
-
(整数)特征几何类型的标识符。值为:
-
1
(POINT
) -
2
(LINESTRING
) -
3
(POLYGON
)
-
-
-
-
aggs
-
(对象)包含
grid_agg
聚合及其子聚合结果的图层。aggs
的属性-
extent
- (整数)瓦片一侧的大小,以像素为单位。矢量瓦片是等边正方形。
-
version
- (整数)Mapbox 矢量瓦片规范的主要版本号。
-
features
-
(对象数组)特征数组。包含网格的每个单元格的特征。
features
对象的属性-
geometry
-
(对象)特征的几何形状。
geometry
的属性-
type
-
(字符串)特征的几何类型。有效值为:
-
UNKNOWN
-
POINT
-
LINESTRING
-
POLYGON
-
-
coordinates
- (整数数组或数组的数组)特征的瓦片坐标。
-
-
properties
-
(对象)特征的属性。
properties
的属性-
_count
- (长整型)单元格的文档计数。
-
_key
- (字符串)单元格的桶键,格式为
<zoom>/<x>/<y>
。 -
<sub-aggregation>.value
- 单元格的子聚合结果。仅为
aggs
参数中的子聚合返回。
-
-
type
-
(整数)特征几何类型的标识符。值为:
-
1
(POINT
) -
2
(LINESTRING
) -
3
(POLYGON
)
-
-
-
-
meta
-
(对象)包含请求元数据的图层。
meta
的属性-
extent
- (整数)瓦片一侧的大小,以像素为单位。矢量瓦片是等边正方形。
-
version
- (整数)Mapbox 矢量瓦片规范的主要版本号。
-
features
-
(对象数组)包含边界框的特征。
features
对象的属性-
geometry
-
(对象)特征的几何形状。
geometry
的属性-
type
-
(字符串)特征的几何类型。有效值为:
-
UNKNOWN
-
POINT
-
LINESTRING
-
POLYGON
-
-
coordinates
- (整数数组或数组的数组)特征的瓦片坐标。
-
-
properties
-
(对象)特征的属性。
properties
的属性-
_shards.failed
- (整数)执行搜索失败的分片数。请参阅搜索 API 的
shards
响应属性。 -
_shards.skipped
- (整数)跳过搜索的分片数。请参阅搜索 API 的
shards
响应属性。 -
_shards.successful
- (整数)成功执行搜索的分片数。请参阅搜索 API 的
shards
响应属性。 -
_shards.total
- (整数)需要查询的分片总数,包括未分配的分片。请参阅搜索 API 的
shards
响应属性。 -
aggregations._count.avg
- (浮点数)
aggs
图层中特征的_count
值的平均值。 -
aggregations._count.count
- (整数)
aggs
图层中特征的唯一_count
值的数量。 -
aggregations._count.max
- (浮点数)
aggs
图层中特征的最大_count
值。 -
aggregations._count.min
- (浮点数)
aggs
图层中特征的最小_count
值。 -
aggregations._count.sum
- (浮点数)
aggs
图层中特征的_count
值之和。 -
aggregations.<sub-aggregation>.avg
- (浮点数)子聚合结果的平均值。
-
aggregations.<agg_name>.count
- (整数)来自子聚合结果的唯一值的数量。
-
aggregations.<agg_name>.max
- (浮点数)来自子聚合结果的最大值。
-
aggregations.<agg_name>.min
- (浮点数)来自子聚合结果的最小值。
-
aggregations.<agg_name>.sum
- (浮点数)子聚合结果的值之和。
-
hits.max_score
- (浮点数)搜索命中结果的最高文档
_score
。 -
hits.total.relation
-
(字符串)指示
hits.total.value
是精确值还是下限值。可能的值为:-
eq
- 精确
-
gte
- 下限
-
-
hits.total.value
- (整数)搜索命中的总数。
-
timed_out
- (布尔值)如果为
true
,则搜索在完成前超时。结果可能不完整或为空。 -
took
- (整数)Elasticsearch 运行搜索所花费的毫秒数。请参阅搜索 API 的
took
响应属性。
-
-
type
-
(整数)特征几何类型的标识符。值为:
-
1
(POINT
) -
2
(LINESTRING
) -
3
(POLYGON
)
-
-
-
示例
编辑以下请求创建 museum
索引并添加几个地理空间 location
值。
resp = client.indices.create( index="museums", mappings={ "properties": { "location": { "type": "geo_point" }, "name": { "type": "keyword" }, "price": { "type": "long" }, "included": { "type": "boolean" } } }, ) print(resp) resp1 = client.bulk( index="museums", refresh=True, operations=[ { "index": { "_id": "1" } }, { "location": "POINT (4.912350 52.374081)", "name": "NEMO Science Museum", "price": 1750, "included": True }, { "index": { "_id": "2" } }, { "location": "POINT (4.901618 52.369219)", "name": "Museum Het Rembrandthuis", "price": 1500, "included": False }, { "index": { "_id": "3" } }, { "location": "POINT (4.914722 52.371667)", "name": "Nederlands Scheepvaartmuseum", "price": 1650, "included": True }, { "index": { "_id": "4" } }, { "location": "POINT (4.914722 52.371667)", "name": "Amsterdam Centre for Architecture", "price": 0, "included": True } ], ) print(resp1)
response = client.indices.create( index: 'museums', body: { mappings: { properties: { location: { type: 'geo_point' }, name: { type: 'keyword' }, price: { type: 'long' }, included: { type: 'boolean' } } } } ) puts response response = client.bulk( index: 'museums', refresh: true, body: [ { index: { _id: '1' } }, { location: 'POINT (4.912350 52.374081)', name: 'NEMO Science Museum', price: 1750, included: true }, { index: { _id: '2' } }, { location: 'POINT (4.901618 52.369219)', name: 'Museum Het Rembrandthuis', price: 1500, included: false }, { index: { _id: '3' } }, { location: 'POINT (4.914722 52.371667)', name: 'Nederlands Scheepvaartmuseum', price: 1650, included: true }, { index: { _id: '4' } }, { location: 'POINT (4.914722 52.371667)', name: 'Amsterdam Centre for Architecture', price: 0, included: true } ] ) puts response
const response = await client.indices.create({ index: "museums", mappings: { properties: { location: { type: "geo_point", }, name: { type: "keyword", }, price: { type: "long", }, included: { type: "boolean", }, }, }, }); console.log(response); const response1 = await client.bulk({ index: "museums", refresh: "true", operations: [ { index: { _id: "1", }, }, { location: "POINT (4.912350 52.374081)", name: "NEMO Science Museum", price: 1750, included: true, }, { index: { _id: "2", }, }, { location: "POINT (4.901618 52.369219)", name: "Museum Het Rembrandthuis", price: 1500, included: false, }, { index: { _id: "3", }, }, { location: "POINT (4.914722 52.371667)", name: "Nederlands Scheepvaartmuseum", price: 1650, included: true, }, { index: { _id: "4", }, }, { location: "POINT (4.914722 52.371667)", name: "Amsterdam Centre for Architecture", price: 0, included: true, }, ], }); console.log(response1);
PUT museums { "mappings": { "properties": { "location": { "type": "geo_point" }, "name": { "type": "keyword" }, "price": { "type": "long" }, "included": { "type": "boolean" } } } } POST museums/_bulk?refresh { "index": { "_id": "1" } } { "location": "POINT (4.912350 52.374081)", "name": "NEMO Science Museum", "price": 1750, "included": true } { "index": { "_id": "2" } } { "location": "POINT (4.901618 52.369219)", "name": "Museum Het Rembrandthuis", "price": 1500, "included": false } { "index": { "_id": "3" } } { "location": "POINT (4.914722 52.371667)", "name": "Nederlands Scheepvaartmuseum", "price":1650, "included": true } { "index": { "_id": "4" } } { "location": "POINT (4.914722 52.371667)", "name": "Amsterdam Centre for Architecture", "price":0, "included": true }
以下请求在索引中搜索与 13/4207/2692
矢量瓦片相交的 location
值。
resp = client.search_mvt( index="museums", field="location", zoom="13", x="4207", y="2692", grid_agg="geotile", grid_precision=2, fields=[ "name", "price" ], query={ "term": { "included": True } }, aggs={ "min_price": { "min": { "field": "price" } }, "max_price": { "max": { "field": "price" } }, "avg_price": { "avg": { "field": "price" } } }, ) print(resp)
const response = await client.searchMvt({ index: "museums", field: "location", zoom: 13, x: 4207, y: 2692, grid_agg: "geotile", grid_precision: 2, fields: ["name", "price"], query: { term: { included: true, }, }, aggs: { min_price: { min: { field: "price", }, }, max_price: { max: { field: "price", }, }, avg_price: { avg: { field: "price", }, }, }, }); console.log(response);
GET museums/_mvt/location/13/4207/2692 { "grid_agg": "geotile", "grid_precision": 2, "fields": [ "name", "price" ], "query": { "term": { "included": true } }, "aggs": { "min_price": { "min": { "field": "price" } }, "max_price": { "max": { "field": "price" } }, "avg_price": { "avg": { "field": "price" } } } }
API 以二进制矢量瓦片的形式返回结果。当解码为 JSON 时,该瓦片包含以下数据:
{ "hits": { "extent": 4096, "version": 2, "features": [ { "geometry": { "type": "Point", "coordinates": [ 3208, 3864 ] }, "properties": { "_id": "1", "_index": "museums", "name": "NEMO Science Museum", "price": 1750 }, "type": 1 }, { "geometry": { "type": "Point", "coordinates": [ 3429, 3496 ] }, "properties": { "_id": "3", "_index": "museums", "name": "Nederlands Scheepvaartmuseum", "price": 1650 }, "type": 1 }, { "geometry": { "type": "Point", "coordinates": [ 3429, 3496 ] }, "properties": { "_id": "4", "_index": "museums", "name": "Amsterdam Centre for Architecture", "price": 0 }, "type": 1 } ] }, "aggs": { "extent": 4096, "version": 2, "features": [ { "geometry": { "type": "Polygon", "coordinates": [ [ [ 3072, 3072 ], [ 4096, 3072 ], [ 4096, 4096 ], [ 3072, 4096 ], [ 3072, 3072 ] ] ] }, "properties": { "_count": 3, "max_price.value": 1750.0, "min_price.value": 0.0, "avg_price.value": 1133.3333333333333 }, "type": 3 } ] }, "meta": { "extent": 4096, "version": 2, "features": [ { "geometry": { "type": "Polygon", "coordinates": [ [ [ 0, 0 ], [ 4096, 0 ], [ 4096, 4096 ], [ 0, 4096 ], [ 0, 0 ] ] ] }, "properties": { "_shards.failed": 0, "_shards.skipped": 0, "_shards.successful": 1, "_shards.total": 1, "aggregations._count.avg": 3.0, "aggregations._count.count": 1, "aggregations._count.max": 3.0, "aggregations._count.min": 3.0, "aggregations._count.sum": 3.0, "aggregations.avg_price.avg": 1133.3333333333333, "aggregations.avg_price.count": 1, "aggregations.avg_price.max": 1133.3333333333333, "aggregations.avg_price.min": 1133.3333333333333, "aggregations.avg_price.sum": 1133.3333333333333, "aggregations.max_price.avg": 1750.0, "aggregations.max_price.count": 1, "aggregations.max_price.max": 1750.0, "aggregations.max_price.min": 1750.0, "aggregations.max_price.sum": 1750.0, "aggregations.min_price.avg": 0.0, "aggregations.min_price.count": 1, "aggregations.min_price.max": 0.0, "aggregations.min_price.min": 0.0, "aggregations.min_price.sum": 0.0, "hits.max_score": 0.0, "hits.total.relation": "eq", "hits.total.value": 3, "timed_out": false, "took": 2 }, "type": 3 } ] } }