词项连接
使用术语连接可以增强矢量要素,添加用于数据驱动样式和更丰富工具提示内容的属性。
术语连接适用于以下矢量图层
- 已配置的 GeoJSON
- 文档
- EMS 边界
等值区域图层示例使用术语连接,根据 Web 日志流量对世界各国进行着色。颜色越深代表 Web 日志流量越多的国家,颜色越浅代表流量越少的国家。
术语连接使用共享键将矢量要素(左侧源)与 Elasticsearch 术语聚合的结果(右侧源)进行组合。
等值区域示例使用共享键 ISO 3166-1 alpha-2 代码将世界各国与 Web 日志流量关联起来。ISO 3166-1 alpha-2 代码是一种通过双字母国家代码来标识国家的国际标准。例如,瑞典 (Sweden) 的 ISO 3166-1 alpha-2 代码为 SE。
术语连接的左侧源是 Elastic Maps Service (EMS) 的世界各国 (World Countries)。此源的矢量要素由 EMS 提供。您也可以使用您自己的矢量要素。
在以下示例中,iso2 属性定义了左侧源的共享键。
{
geometry: {
coordinates: [...],
type: "Polygon"
},
properties: {
name: "Sweden",
iso2: "SE"
},
type: "Feature"
}
右侧源使用 Kibana 示例数据集“Sample web logs”(示例 Web 日志)。在此数据集中,geo.src 字段包含了来源国的 ISO 3166-1 alpha-2 代码。
术语聚合 (terms aggregation) 按 geo.src 对示例 Web 日志文档进行分组,并为每个术语计算指标。
METRICS(指标)配置定义了两个指标聚合
- 术语存储桶中所有文档的计数。
- 术语存储桶中所有文档的“bytes”(字节)字段的平均值。
右侧源不提供单个文档,而是提供来自术语聚合的指标。这些指标是根据以下示例 Web 日志文档计算得出的。
{
bytes: 1837,
geo: {
src: "SE"
},
timestamp: "Feb 28, 2019 @ 07:23:08.754"
},
{
bytes: 971,
geo: {
src: "SE"
},
timestamp: "Feb 27, 2019 @ 08:10:45.205"
},
{
bytes: 4277,
geo: {
src: "SE"
},
timestamp: "Feb 21, 2019 @ 05:24:33.945"
},
{
bytes: 5624,
geo: {
src: "SE"
},
timestamp: "Feb 21, 2019 @ 04:57:05.921"
}
术语聚合会为每个唯一的 geo.src 值创建一个存储桶。指标是针对存储桶中的所有文档计算的。
下面显示了一个示例术语聚合响应。请注意 key 属性,它定义了右侧源的共享键。
{
aggregations: {
join: {
buckets: [
{
doc_count: 4,
key: "SE",
avg_of_bytes: {
value: 3177.25
}
},
...
]
}
}
}
连接操作会将每个术语聚合存储桶的指标添加到具有相应 ISO 3166-1 alpha-2 代码的世界各国要素中。没有对应术语聚合存储桶的要素在地图上不可见。
世界各国要素现在具有两个额外的属性
- 源自该国的 Web 日志流量计数
- 源自该国的 Web 日志流量的平均字节数
等值区域示例使用 Web 日志流量计数来根据 Web 日志流量对国家进行符号化。