矢量切片搜索 API编辑

搜索矢量切片中的地理空间值。以二进制 Mapbox 矢量切片 格式返回结果。

GET my-index/_mvt/my-geo-field/15/5271/12710

请求编辑

GET <target>/_mvt/<field>/<zoom>/<x>/<y>

POST <target>/_mvt/<field>/<zoom>/<x>/<y>

先决条件编辑

路径参数编辑

<target>

(必填,字符串)要搜索的数据流、索引或别名的逗号分隔列表。支持通配符 (*)。要搜索所有数据流和索引,请省略此参数或使用 *_all

要搜索远程集群,请使用 <cluster>:<target> 语法。请参阅 跨集群搜索

<field>

(必填,字符串)包含要返回的地理空间值的字段。必须是 geo_pointgeo_shape 字段。该字段必须启用 文档值。不能是嵌套字段。

矢量切片本身不支持几何图形集合。对于 geo_shape 字段中的 geometrycollection 值,API 会为集合中的每个元素返回一个 hits 图层要素。此行为在未来版本中可能会更改。

<zoom>
(必填,整数)要搜索的矢量切片的缩放级别。接受 0-29
<x>
(必填,整数)要搜索的矢量切片的 X 坐标。
<y>
(必填,整数)要搜索的矢量切片的 Y 坐标。

描述编辑

在内部,Elasticsearch 会将矢量切片搜索 API 请求转换为包含以下内容的 搜索

  • <field> 进行 geo_bounding_box 查询。该查询使用 <zoom>/<x>/<y> 切片作为边界框。
  • <field> 进行 geotile_gridgeohex_grid 聚合。grid_agg 参数确定聚合类型。该聚合使用 <zoom>/<x>/<y> 切片作为边界框。
  • (可选)对 <field> 进行 geo_bounds 聚合。仅当 exact_bounds 参数为 true 时,搜索才包含此聚合。
  • 如果可选参数 with_labels 为 true,则内部搜索将包含一个动态运行时字段,该字段调用几何图形文档值的 getLabelPosition 函数。这将启用生成包含建议几何图形标签的新点要素,例如,多边形将只有一个标签。

例如,Elasticsearch 可以将 grid_agg 参数为 geotileexact_bounds 参数为 true 的矢量切片搜索 API 请求转换为以下搜索

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_gridgeohex_grid 中每个单元格的要素。该图层仅包含具有匹配数据的单元格的要素。
  • 一个 meta 图层,其中包含

    • 一个包含边界框的要素。默认情况下,这是切片的边界框。
    • geotile_gridgeohex_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 的网格精度

对于 geotilegrid_agg,您可以使用 aggs 图层中的单元格作为较低缩放级别的切片。grid_precision 表示通过这些单元格可用的附加缩放级别。最终精度计算如下

<zoom> + grid_precision

例如,如果 <zoom>7grid_precision8,则 geotile_grid 聚合将使用 15 的精度。最大最终精度为 29

grid_precision 还确定网格的单元格数量,如下所示

(2^grid_precision) x (2^grid_precision)

例如,值为 8 会将切片划分为 256 x 256 个单元格的网格。aggs 图层仅包含具有匹配数据的单元格的要素。

geohex 的网格精度

对于 geohexgrid_agg,Elasticsearch 使用 <zoom>grid_precision 来计算最终精度,如下所示

<zoom> + grid_precision

此精度确定由 geohex 聚合生成的 六边形单元格的 H3 分辨率。下表列出了每个精度的 H3 分辨率。

例如,如果 <zoom>3grid_precision3,则精度为 6。在精度为 6 时,六边形单元格的 H3 分辨率为 2。如果 <zoom>3grid_precision4,则精度为 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。对于 geotilegrid_agg,该要素是单元格的边界框。对于 geohexgrid_agg,该要素是六边形单元格的边界。
point
每个要素都是单元格质心的 Point
centroid
每个要素都是单元格内数据质心的 Point。对于复杂的几何图形,实际质心可能位于单元格外部。在这些情况下,该要素将设置为单元格内最接近质心的点。
size
(可选,整数)要在 hits 图层中返回的最大要素数。接受 0-10000。默认为 10000。如果为 0,则结果不包含 hits 图层。
track_total_hits

(可选,整数或布尔值)要精确计数的与查询匹配的命中数。默认为 10000

如果为 true,则会返回确切的匹配数,但会牺牲一些性能。如果为 false,则响应中不包含与查询匹配的总数。

with_labels

(可选,布尔值)如果为 true,则 hits 和 aggs 层将包含额外的点要素,表示原始要素的建议标签位置。

  • PointMultiPoint 要素将选择其中一个点。
  • PolygonMultiPolygon 要素将生成一个点,如果质心在多边形内,则为质心,否则为从 排序三角树 中选择的多边形内的另一个点。
  • LineString 要素同样会提供一个从 三角树 中选择的近似中心点。
  • 聚合结果将为每个聚合桶提供一个中心点。

原始要素的所有属性也将复制到新的标签要素。此外,可以使用标签 _mvt_label_position 区分新要素。

请求正文编辑

aggs

(可选,聚合对象grid_agg子聚合。支持以下聚合类型

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

(可选,字符串)日期和地理空间字段的格式。其他字段数据类型不支持此参数。

datedate_nanos 字段接受 日期格式geo_pointgeo_shape 字段接受

geojson(默认)
GeoJSON
wkt
众所周知的文本
mvt(<spec>)

二进制 Mapbox 矢量切片。API 将切片作为 base64 编码的字符串返回。<spec> 的格式为 <zoom>/<x>/<y>,带有两个可选的后缀:@<extent> 和/或 :<buffer>。例如,2/0/12/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 的网格精度

对于 geotilegrid_agg,您可以使用 aggs 图层中的单元格作为较低缩放级别的切片。grid_precision 表示通过这些单元格可用的附加缩放级别。最终精度计算如下

<zoom> + grid_precision

例如,如果 <zoom>7grid_precision8,则 geotile_grid 聚合将使用 15 的精度。最大最终精度为 29

grid_precision 还确定网格的单元格数量,如下所示

(2^grid_precision) x (2^grid_precision)

例如,值为 8 会将切片划分为 256 x 256 个单元格的网格。aggs 图层仅包含具有匹配数据的单元格的要素。

geohex 的网格精度

对于 geohexgrid_agg,Elasticsearch 使用 <zoom>grid_precision 来计算最终精度,如下所示

<zoom> + grid_precision

此精度确定由 geohex 聚合生成的 六边形单元格的 H3 分辨率。下表列出了每个精度的 H3 分辨率。

例如,如果 <zoom>3grid_precision3,则精度为 6。在精度为 6 时,六边形单元格的 H3 分辨率为 2。如果 <zoom>3grid_precision4,则精度为 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。对于 geotilegrid_agg,该要素是单元格的边界框。对于 geohexgrid_agg,该要素是六边形单元格的边界。
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 层将包含额外的点要素,表示原始要素的建议标签位置。

  • PointMultiPoint 要素将选择其中一个点。
  • PolygonMultiPolygon 要素将生成一个点,如果质心在多边形内,则为质心,否则为从 排序三角树 中选择的多边形内的另一个点。
  • LineString 要素同样会提供一个从 三角树 中选择的近似中心点。
  • 聚合结果将为每个聚合桶提供一个中心点。

原始要素的所有属性也将复制到新的标签要素。此外,可以使用标签 _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 值。

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
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 值。

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
      }
    ]
  }
}