Elasticsearch 8.16 中的新增功能
编辑Elasticsearch 8.16 中的新增功能
编辑Elasticsearch 8.16 中的新功能。
以下是 Elasticsearch 8.16 中的新增功能和改进亮点!有关此版本的详细信息,请参阅发行说明和迁移指南。
其他版本
8.15 | 8.14 | 8.13 | 8.12 | 8.11 | 8.10 | 8.9 | 8.8 | 8.7 | 8.6 | 8.5 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0
ESQL:INLINESTATS
编辑这将 INLINESTATS
命令添加到 ESQL 中,该命令执行 STATS,然后将结果丰富到输出流中。因此,此查询
FROM test | INLINESTATS m=MAX(a * b) BY b | WHERE m == a * b | SORT a DESC, b DESC | LIMIT 3
产生如下输出
| a | b | m | | --- | --- | ----- | | 99 | 999 | 98901 | | 99 | 998 | 98802 | | 99 | 997 | 98703 |
默认情况下始终允许重新平衡
编辑在早期版本的 Elasticsearch 中,cluster.routing.allocation.allow_rebalance
设置默认为 indices_all_active
,这会在集群处于 yellow
或 red
健康状态时阻止所有重新平衡移动。这对于旧版分配器是合适的,否则旧版分配器可能会进行过多的重新平衡移动。如今的分配器更好地支持重新平衡不在 green
健康状态的集群,并期望能够将某些分片从过度填充的节点重新平衡到其他节点,以避免首先将分片分配到不希望的位置。从 8.16 版本开始,allow_rebalance
设置默认为 always
,除非显式启用了旧版分配器。
在数据流生命周期中添加全局保留
编辑数据流生命周期现在支持在集群级别配置保留,即全局保留。全局保留\允许我们配置两种不同的保留
-
data_streams.lifecycle.retention.default
应用于由数据流生命周期管理的所有未在数据流级别定义保留的数据流。 -
data_streams.lifecycle.retention.max
应用于由数据流生命周期管理的所有数据流,并且它允许在max_retention
过期后删除任何数据流\数据。
为索引编解码器设置为 best_compression 的索引启用 ZStandard 压缩
编辑在之前,DEFLATE 压缩用于压缩索引编解码器索引设置设置为 best_compression 的索引中的存储字段,通过此更改,ZStandard 被用作存储字段的压缩算法,用于索引编解码器索引设置设置为 best_compression 的索引。根据使用的选项,使用 ZStandard 会导致更少的存储使用量和类似的索引吞吐量。索引日志的实验表明,与 DEFLATE 相比,ZStandard 提供了约 12% 的更低存储使用量和约 14% 的更高索引吞吐量。
[[8_x_remove_zstd_feature_flag_for_index_codec_best_compression]] === [8.x] 删除索引编解码器 best_compression 的 zstd 功能标志 将以下提交回传到 8.x:- 删除索引编解码器 best_compression 的 zstd 功能标志。(#112665)
ESQL:引入每个聚合过滤器
编辑添加对聚合作用域过滤器的支持,这些过滤器在每个组中的数据上动态工作。
| STATS success = COUNT(*) WHERE 200 <= code AND code < 300, redirect = COUNT(*) WHERE 300 <= code AND code < 400, client_err = COUNT(*) WHERE 400 <= code AND code < 500, server_err = COUNT(*) WHERE 500 <= code AND code < 600, total_count = COUNT(*)
在实现方面,基本 AggregateFunction 已扩展为允许传递过滤器。这是将过滤器作为聚合相等性/标识的一部分纳入的必要条件,如果过滤器作为外部组件,则聚合相等性/标识将失败。作为该过程的一部分,必须修复现有聚合的序列化,以便 AggregateFunction 实现首先委托给其父级。
ESQL:地理空间谓词支持多值字段
编辑在 WHERE
谓词中支持多值字段是一个挑战,因为不知道字段中的ALL
或ANY
值是否应该通过谓词。例如,字段 age:[10,30]
是否应该通过谓词 WHERE age>20
?这种歧义在空间谓词 ST_INTERSECTS
和 ST_DISJOINT
中不存在,因为 ANY
或 ALL
之间的选择是由谓词本身隐含的。考虑一个谓词,它检查名为 location
的字段与名为 shape
的测试几何图形。
-
ST_INTERSECTS(field, shape)
- 如果ANY
值可以与形状相交,则为真 -
ST_DISJOINT(field, shape)
- 仅当ALL
值与形状不相交时才为真
即使形状参数本身是复杂或复合几何图形,这也有效。
类似的逻辑存在于 ST_CONTAINS
和 ST_WITHIN
谓词中,但这些不容易用 ANY
或 ALL
解决,因为如果包含的每个几何图形都在至少一个包含的几何图形内,则几何图形集合包含另一个几何图形集合。评估此操作需要首先将多值字段组合成单个几何图形,然后再执行谓词检查。
-
ST_CONTAINS(field, shape)
- 如果组合几何图形包含形状,则为真 -
ST_WITHIN(field, shape)
- 如果组合几何图形在形状内,则为真
增强 SORT 推送到 Lucene 以涵盖对字段和 ST_DISTANCE 函数的引用
编辑Elasticsearch 中使用最广泛且可能最有价值的地理空间搜索查询是排序的邻近搜索,即查找距兴趣点一定距离内的项目并按距离对结果进行排序。这在 ES|QL 中自 8.15.0 版本以来一直是可能的,但排序是在内存中完成的,而不是推送到 Lucene。现在排序被推送到 Lucene,这导致了显着的性能改进。
支持执行距离过滤和排序的查询。例如
FROM test | EVAL distance = ST_DISTANCE(location, TO_GEOPOINT("POINT(37.7749, -122.4194)")) | WHERE distance < 1000000 | SORT distance ASC, name DESC | LIMIT 10
此外,对 EVAL 表达式排序的支持已扩展到涵盖对字段的引用
FROM test | EVAL ref = field | SORT ref ASC | LIMIT 10
跨集群搜索遥测
编辑当执行跨集群搜索时,会收集跨集群搜索遥测,并在 _cluster/stats
输出中作为 "ccs" 字段返回。它还为 _cluster/stats
API 添加了一个新参数 include_remotes=true
,该参数将从连接的远程集群收集数据。