RediSearch 2.8 发行说明

支持 RESP3。地理多边形搜索。性能改进。

要求

RediSearch v2.8.26 需要

  • 最低 Redis 兼容版本(数据库):7.2
  • 最低 Redis Enterprise Software 版本(集群):7.2.4

v2.8.26 (2025 年 4 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

错误修复

  • #5864 使用 FT.AGGREGATE 配合 ON_TIMEOUT RETURN 和多线程时,最后一个查询结果可能丢失 (MOD-9222)
  • #5863 在使用 RESP3 的 FT.AGGREGATE 期间从分片收集空结果可能导致崩溃 (MOD-9174)

改进

  • #5938 改进了收集矢量索引统计信息的性能(减少了 CPU 时间)(MOD-9354)
  • #5800 修复了导致内存计数为负的错误,提高了索引内存报告的准确性 (MOD-5904)

创建时间:2025-04-21T14:51:40Z

v2.8.25 (2025 年 3 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

错误修复

  • #5709 使用 SCORER BM25 时,查询字符串中的权重会被忽略 (MOD-7896)
  • #5788 使用 SORTBY 的游标永远不会耗尽,如果在达到游标限制时会阻塞查询 (MOD-8483)
  • #5788 即使 ON_TIMEOUT 设置为 RETURN,由于 TIMEOUT 也会导致 RESP3 结果为空 (MOD-8482)
  • #5788FT.AGGREGATE 上使用 RESP3 的游标永远不会耗尽,如果在达到游标限制时会阻塞查询 (MOD-8515)
  • #5788 在已超时的查询上使用 FT.CURSOR READ 导致结果少于预期 (MOD-8606)
  • #5810 FT.AGGREGATE 命令的 total_results 字段在 RESP3 中不正确 (MOD-9054)

改进

  • #5788 修正了一个协调器竞争条件,该条件阻止了过早释放,从而避免了查询执行期间的错误和不一致 (MOD-8794)

v2.8.24 (2025 年 2 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:LOW 如果没有需要使用的新功能,则无需升级。

错误修复

  • #5647 使用西里尔字符和通配符的 FT.SEARCH 不返回结果 (MOD-7944)

v2.8.23 (2025 年 2 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

错误修复

  • #5605 内存块读取逻辑的更改可能导致 FT.SEARCH 崩溃,并出现错误 "Redis 7.4.2 crashed by signal: 11, si_code: 128"

已知限制

  • 在摄取期间(例如,在 HSET 上),仅将字符串字段的前 128 个字符规范化为小写。示例

    HSET doc __score 1.0 name "idx1S...S" mynum 1          # Assume "S...S" is a string of 252 capital S's
    FT.CREATE "idx" SCHEMA "name" "TEXT" "mynum" "NUMERIC"
    FT.SEARCH "idx" "@name:idx1S...S"                      # Assume "S...S" is a string of 252 capital S's
    

    FT.SEARCH 命令将不返回文档。

v2.8.22 (2025 年 1 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

错误修复

  • #5475 NOSTEM 选项在查询时不起作用,只进行分词 (MOD-7634)
  • #5542 如果最后一个块未读取,查询索引中最新添加的文档可能导致崩溃 (MOD-8561)。

v2.8.21 (2025 年 1 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:SECURITY:此版本包含安全修复。

安全和隐私

  • #5457 (CVE-2024-51737) 查询:潜在的越界写入 (MOD-8486)

错误修复

  • #5299 长度超过 1024 个字符的前缀/中缀/后缀查询可能导致崩溃 (MOD-7882)
  • #5303 后台索引期间过期的键在使用 replicaof 时可能导致跨槽错误 (MOD-7949)
  • #5280 FT.CURSOR READ 检索已删除的 TAG 字段导致崩溃 (MOD-8011)
  • #5427 在集群数据库中对数字字段进行 FT.AGGREGATE 操作导致 failed_calls 计数增加 (MOD-8058)
  • #5242 索引清理程序在处理缺失值时对 bytes_collected 进行内存计数 (MOD-8097, MOD-8114)
  • #5167 来自超时的查询的游标未被耗尽,导致可用游标数量耗尽 (MOD-8009)

改进

  • #5260 优化索引占用的内存,仅在写入操作时创建 (MOD-8125)

v2.8.17 (2024 年 8 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

  • 错误修复

    • #4941 调整模块配置,避免集群数据库中第一个分片的路由过载 (MOD-7505)
    • #4950 在对大量数字值范围的 AGGREGATE 查询上使用 FT.PROFILE 可能由于重用内部 CURSOR 而导致崩溃 (MOD-7454)

v2.8.16 (2024 年 8 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

  • 错误修复

    • #4896 - 在集群模式下,分片不处理带有 VERBATIM 选项的 FT.AGGREGATE (MOD-7463)
    • #4917 - 类似于 "is|the" 的联合查询,以 2 个停用词开头可能导致崩溃 (MOD-7495)
    • #4921 - 在 INFO 响应的 #search 部分重复计算字段统计信息 (MOD-7339)
    • #4939 - 使用 RESP3 响应达到 MAXPREFIXEXPANSION 时发出查询警告 (MOD-7588)
    • #4930 - 使用通配符 w'term' 和前缀/中缀/后缀模式 'ter*' 时出现循环,导致分片重启 (MOD-7453)
    • #4912 - 查询数字值时避免词干扩展 (MOD-7025)

v2.8.15 (2024 年 7 月)

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

  • 错误修复

    • #4754 - 使用 MAX 聚合器时,正确返回负值的最大值 (MOD-7252)
    • #4737 - 在转义字符后转义反斜杠 \ 时(例如在 hello\\,world 中),分隔符被忽略(忽略了 ,)(MOD-7240)
    • #4717 - 按多个字段排序 SORTBY 2 @field1 @field2 时,后续字段被忽略 (MOD-7206)
    • #4803 - 查询期间过期的键返回空数组 (MOD-7010)
    • #4794 - 索引清理程序(GC)尝试清理已删除的数字索引可能导致崩溃 (MOD-7303)
  • 改进

    • #4792 - 对简单字符串回复添加字符验证,并在需要时进行转义 (MOD-7258)
    • #4768 - 在聚合管道的错误消息中指示哪个值缺失 (MOD-7201)
    • #4745 - GROUPBY 递归清理 (MOD-7245)
    • #4823 - 查询执行期间键过期机制会清除中间结果

v2.8.14 (2024 年 6 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:MODERATE:计划服务器升级,但不紧急。

  • 错误修复

    • #4614 使用带有 APPLY 'split(...)'FT.AGGREGATE 时,分片变得无响应 (MOD-6759)
    • #4556 使用通配符查询时,FT.EXPLAIN 返回额外的 } (MOD-6768)
    • #4646 带有 DD 标志的 FT.DROPINDEX 在一个 AA 集群中删除了键,但在其他集群中未删除 (MOD-1855)
  • 改进

    • #4595 报告 TAGTEXT trie 的内存 (MOD-5902)
    • #4669 倒排索引内存计数 (MOD-5977,MOD-5866)
    • #4687 在集群中使用时添加缺失的 FT.INFO 字段 (MOD-6920)

v2.8.13 (2024 年 3 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

详情

  • 错误修复

    • #4481 GEOSHAPE 的查询语法仅接受前缀而不是完整谓词 (MOD-6663)
    • #4513 在数字查询中使用 FT.CURSOR READ 导致崩溃 (MOD-6597)
    • #4534 在集群设置中,带有不正确参数的 FT.PROFILE 可能导致崩溃 (MOD-6791)
    • #4530 一些参数设置仅使用前缀而不是完整值却可以工作 (MOD-6709)
    • #4539 在加载新的 RDB 文件时重新索引期间未释放内存可能导致崩溃 (MOD-6831, 6810)
    • #4498 超时的向量预过滤查询(混合查询)在尝试写入新文档时由于死锁导致崩溃 (MOD-6510, MOD-6244)
    • #4495 如果使用已弃用的 FT.ADD 命令,FT.SEARCH 访问不存在的内存地址会导致崩溃 (MOD-6599)
  • 改进

    • #4502 在集群设置中作为 MULTI ... EXEC 或 LUA 脚本的一部分尝试执行搜索命令时,正确处理错误 (MOD-6541)
    • #4526 在错误消息中添加详细的几何信息 (MOD-6701)

v2.8.12 (2024 年 3 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:MODERATE:计划服务器升级,但不紧急。

详情

  • 错误修复

    • #4476FT.EXPLAINFT.EXPLAINCLI 中分割 INFIXSUFFIX 报告 (MOD-6186)
    • #4467 对使用 WITHSUFFIXTRIE 索引的 TAG 进行后缀查询时出现内存泄漏 (MOD-6644)
    • #4403 在发现无效拓扑时,集群 FT.SEARCH 会永远挂起而无响应 (MOD-6557)
    • #4355 搜索同义词时会在同一组中多次迭代,导致性能下降 (MOD-6490)
  • 改进

    • #4313 查询 GEOSHAPE 类型所用内存的内存分配模式 (MOD-6431)

v2.8.11 (2024 年 1 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:MODERATE:计划服务器升级,但不紧急。

详情

  • 错误修复

    • #4324 内部集群机制未等待所有分片回复导致崩溃 (MOD-6287)
    • #4297 在使用 FT.AGGREGATE 并带有 LOAD 阶段时,执行加载器未能缓冲正确的结果,可能导致崩溃 (MOD-6385)
  • 改进

    • #4264 FT.PROFILE 上时间报告计数器的粒度 (MOD-6002)

v2.8.10 (2024 年 1 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

详情

  • 错误修复

    • #4287 从副本同步时的重新索引过程由于内部索引变量初始化而导致崩溃 (MOD-6337, MOD-6336)
    • #4249 集群设置中的内存跟踪导致高内存使用量,可能导致内存溢出 (MOD-6123, MOD-5639)
    • #4244 使用 WITHCURSOR 标志和 - 子句对 FT.AGGREGATE 进行性能分析时,由于超时导致崩溃 (MOD-5512)
    • #3916 查询期间 JSON 文档过期,由于死锁导致崩溃 (MOD-5769, MOD-5895, MOD-6189, MOD-5895)
    • #4235 数据库上内存过度增长,原因在于倒排索引 trie 的节点不平衡 (MOD-5880, MOD-5952, MOD-6003)
    • #4190FT.AGGREGATE 进行性能分析导致 RESP3 回复崩溃 (MOD-6250, MOD-6295)
    • #4148, #4038 ON_TIMEOUT FAIL\RETURN 策略在集群设置中未被遵守 (MOD-6035, MOD-5948, MOD-6090)
    • #4110 超时时,错误响应格式包含不一致 (MOD-6011, MOD-5965)
    • #4104 在 Amazon Linux 2 上使用 TLS 加密时 FT.SEARCH 无响应 (MOD-6012)
    • #4009 在集群设置中,FT.SEARCH 不返回超时错误 (MOD-5911)
    • #3920 在集群设置中,FT.AGGREGATE 不返回超时错误 (MOD-5209)
    • #3914 在游标读取之间数据更新时,带有地理查询的 FT.CURSOR READ 导致崩溃 (MOD-5646)
    • #4220 删除索引后尝试运行 ForkGC(垃圾回收例程)时服务器崩溃 (MOD-6276)
  • 改进

    • #3682FT.INFO 中报告最后一个键错误和字段类型索引失败 (MOD-5364)
    • #4236FT.INFO 报告中添加矢量索引参数 (MOD-6198)
    • #4196 在集群设置中,在 FT.SEARCH 处理结果后检查超时 (MOD-6278)
    • #4164 在 RESP3 回复中报告 TIMEOUT, MAXPREFIXEXPANSION 警告 (MOD-6234)
    • #4165FT.PROFILE 报告中指示超时 (MOD-6184)
    • #4149FAIL 超时策略下,从 Cursor 指示超时 (MOD-5990)
    • #4147 最大数字值范围的初始化,从而更好地平衡索引叶节点分割 (MOD-6232)
    • #3940 当谓词包含多个 UNION (OR) 的 INTERSECTION (AND) 时,优化查询 (MOD-5910)
    • #4059 当策略为 ON_TIMEOUT RETURN 且发生超时时,返回游标 ID (MOD-5966)
    • #4006 可能存在问题的索引名称别名验证 (MOD-5945)

v2.8.9 (2023 年 10 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!

详情

  • 错误修复

    • #3874 大量文档更新导致内存增长,因为内存块未正确释放 (MOD-5181)
    • #3967 重分片优化导致进程卡住 (MOD-5874, MOD-5864)
    • #3892 清理索引后,GC 可能导致唯一值损坏 (MOD-5815)
    • #3853 带有 WITHCURSOR 的查询导致内存增长,因为 CURSOR 在分片中未被无效化 (MOD-5580)
  • 改进

    • #3938 在多分片数据库中传播错误消息,而不是静默失败 (MOD-5211)
    • #3903 添加了对 Rocky Linux 9 和 RHEL9 的支持 (MOD-5759)

v2.8.8 (2023 年 9 月)

这是 RediSearch 2.8 的维护版本。

更新紧急程度:SECURITY:此版本包含安全修复。

详情

  • 安全和隐私

    • #3788 不暴露内部集群命令 (MOD-5706)
    • #3844 限制最大语音长度以避免被利用 (MOD 5767)
  • 错误修复

    • #3771DIALECT 3FT.AGGREGATEAPPLY 阶段中,lower()upper() 函数损坏 (MOD-5041)
    • #3752FT.AGGREGATE 中设置较低的 MAXIDLE 参数值导致崩溃 (MOD-5608)
    • #3780 错误的文档长度计算导致不正确的分值 (MOD-5622)
    • #3808FILTER 步骤之后的 LOAD 步骤可能导致 FT.AGGREGATE 崩溃 (MOD-5267)
    • #3823 APPLYFILTER 解析器泄漏 (MOD-5751)
    • #3837 在 Redis 7.2 上使用 TLS 的连接失败 (MOD-5768)
    • #3856 向 OSS 集群添加新节点导致崩溃 (MOD-5778)
    • #3854 向量范围查询可能由于内存损坏导致内存溢出 (MOD-5791)
  • 改进

    • #3534 向量相似度 0.7.1 (MOD-5624)

v2.8 GA (v2.8.4) (2023 年 7 月)

这是 RediSearch 2.8 的通用版本。

要点

RediSearch 2.8 引入了对 RESP3 的支持、新功能、性能改进和错误修复。

2.8.4 中的新功能

这个新的主要版本引入了新的、备受期待的地理多边形搜索功能,添加了支持使用 WKT 表示法 的多边形形状的 GEOSHAPE 字段类型。除了地理范围查询中使用的当前 GEO (GEOPOINT 的别名) 之外,我们还添加了对 POLYGONPOINT 作为新的地理形状格式(新的 GEOSHAPE)的支持。此外,2.8 为使用 FT.SEARCHFT.AGGREGATESORT BY 操作带来了性能改进,并为仅在 RESP3 中使用的 FT.SEARCHFT.AGGREGATE 提供了新的 FORMAT 以增强响应。

功能特性

  • 引入对地理多边形形状和查询的支持

    • FT.CREATESCHEMA 中添加 GEOSHAPE 字段类型 以映射多边形 (MOD-4798)

    • 支持使用 WKT 表示法 的多边形 POLYGONPOINT,例如 POLYGON((lon1 lat1, lon2 lat2, ...))

    • 调整使用 DIALECT 3FT.SEARCH查询语法,使用谓词 @geom:[OPERATOR $poly] 查询多边形,并在 WKT 格式中定义多边形为 PARAMS 2 poly "POLYGON((10 20, ...))"

    • 目前最初支持带有 GEOSHAPESWITHINCONTAINS 运算符

    • 支持多种坐标系:带有 FLAT 标志的笛卡尔坐标系 (X,Y) 用于平面地球,以及带有 SPHERICAL 标志的地理坐标系 (lon, lat) (MOD-5303)。默认使用球形索引的地理坐标系 (SPHERICAL)

    • FT.INFO 响应报告中添加每个几何索引的内存使用情况 (MOD-5278)

  • DIALECT 4 中默认引入对 FT.SEARCHFT.AGGREGATE 排序操作的性能优化。这将改进以下 4 种不同场景的性能

    • 跳过排序器 - 在没有任何排序时应用。查询可以在达到请求的 LIMIT 结果时返回。

    • 部分范围 - 在对数字字段使用 SORTBY 且没有过滤器或按相同数字字段过滤时应用,查询在足够大的范围内迭代以满足请求的 LIMIT 结果。

    • 混合 - 在对数字字段使用 SORTBY 且带有其他非数字过滤器时应用。部分结果将被过滤,初始范围可能不够大。迭代器随后会使用后续范围重新开始,并进行额外的迭代以收集请求的 LIMIT 结果。

    • 无优化 - 如果按分值或非数字字段排序,则只能检索所有结果并比较它们的值。

  • 添加 WITHCOUNT 参数,该参数允许返回带有排序的查询结果的准确计数。此操作会处理所有结果以获得准确计数,性能低于优化选项(DIALECT 4 中的默认行为)(MOD-5311)

  • FT.SEARCHFT.AGGREGATE 中新的 FORMAT 参数,用于将结果检索为 JSON 字符串或 RESP3 分层结构(仅限 RESP3)(MOD-5390)

改进(自 2.8.3 起)

  • #3717 - 多边形形状验证以及顺时针方向时的方向校正 (MOD-5575)

  • #3534 - 向量相似度 [0.7.0]

  • #3657 - 允许对模式中的所有分层索引进行 GC 调用

  • #3701 - HNSW 现在使用数据块存储向量和元数据,而不是数组

行为变更

  • #3355, #3635 从副本索引中删除过期的键,返回空数组而不是 nil (MOD-4739)
注意
  • Redis 内部的版本将是语义版本控制中的 2.8.4。由于 Redis 中模块的版本是数字的,我们无法添加 GA 标志。

  • 最低 Redis 版本:7.2

  • 如果索引和查询 RedisJSON 数据结构,此版本最好与 RedisJSON 2.6(v2.6.0 及更高版本)结合使用。

评价此页面
返回顶部 ↑
© . This site is unofficial and not affiliated with Redis, Inc.