RediSearch 2.10 发行说明

新的向量数据类型。增强的索引功能。简化的查询语法。扩展了地理空间搜索。

Redis 堆栈

要求

RediSearch v2.10.15 需要:

  • 最低 Redis 兼容版本(数据库):7.4
  • 最低 Redis 企业软件版本(集群):7.6 (TBD)

v2.10.15(2025 年 3 月)

这是 RediSearch 2.10 的维护版本。

更新紧急度:HIGH:存在可能影响用户子集的严重错误。升级!

错误修复:

  • 排名 #5788Cursor 替换为SORTBY永远不会耗尽,如果达到游标限制,则会阻止查询 (MOD-8483)
  • 排名 #5788由于TIMEOUT便ON_TIMEOUT设置为RETURN(MOD-8482)
  • 排名 #5788RESP3 打开的光标FT.AGGREGATE永远不会耗尽,如果游标达到限制,则会阻止查询 (MOD-8515)
  • 排名 #5788FT.CURSOR READ在超时导致结果少于预期结果的查询上 (MOD-8606)
  • #5810total_results字段的FT.AGGREGATE命令在 RESP3 中不正确 (MOD-9054)

改进:

  • 排名 #5788更正了防止过早释放的协调器争用条件,避免了查询执行过程中的错误和不一致 (MOD-8794)

v2.10.14(2025 年 3 月)

这是 RediSearch 2.10 的维护版本。

更新紧急度:LOW除非有您想要使用的新功能,否则无需升级。

错误修复:

v2.10.13(2025 年 2 月)

这是 RediSearch 2.10 的维护版本。

更新紧急度:LOW除非有您想要使用的新功能,否则无需升级。

错误修复:

  • #5646 FT.SEARCH使用西里尔字符和通配符不产生任何结果 (MOD-7944)

v2.10.12(2025 年 2 月)

这是 RediSearch 2.10 的维护版本。

更新紧急度:HIGH:存在可能影响用户子集的严重错误。升级!

错误修复:

  • 排名 #5596更改内存块读取逻辑可能会导致FT.SEARCH出现错误“Redis 7.4.2 因 signal: 11, si_code: 128 崩溃”

已知限制:

  • 在摄取过程中,只有字符串字段的前 128 个字符被规范化为小写(例如,在HSET). 例:

    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.10.11(2025 年 1 月)

这是 RediSearch 2.10 的维护版本。

更新紧急度:HIGH:存在可能影响用户子集的严重错误。升级!

错误修复:

  • 排名 #5536如果未读取最后一个块,则查询添加到索引的最新文档可能会导致崩溃 (MOD-8561)。

v2.10.10(2025 年 1 月)

这是 RediSearch 2.10 的维护版本

更新紧急度:SECURITY:此版本中有安全修复程序。

安全和隐私

  • #5459 (CVE-2024-51737) 查询:可能越界写入 (MOD-8486)

错误修复:

  • #5392 NOSTEMoption 不适用于查询,仅适用于分词集(索引创建) (MOD-7634)
  • 排名 #5300长度超过 1024 个字符的前缀/中缀/后缀查询可能会导致崩溃 (MOD-7882)
  • 排名 #5294在后台索引时过期的密钥可能会导致在使用replicaof(MOD-7949)
  • #5282 FT.CURSOR READ检索已删除TAG字段导致崩溃 (MOD-8011)
  • #5424 FT.AGGREGATE在数值字段上导致failed_calls集群数据库的计数增加 (MOD-8058)
  • 排名 #5241内存计数bytes_collected通过缺失值的索引排错程序(MOD-8097、MOD-8114)

改进:

  • 排名 #5257优化索引仅在写入作时创建时消耗内存 (MOD-8125)

2.10.7 版(2024 年 9 月)

这是 RediSearch 2.10 的维护版本

更新紧急度:HIGH:存在可能影响用户子集的严重错误。升级!

错误修复:

v2.10.6(2024 年 8 月):

这是 RediSearch 2.10 的维护版本。

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

错误修复:

  • #4916 - 联合查询,类似于"is|the",以 2 个 storwords 开头可能会导致崩溃 (MOD-7495)
  • #4895 - FT.AGGREGATEVERBATIM选项不由集群模式下的分片处理 (MOD-7463)
  • #4922 - 在#search部分INFO响应 (MOD-7339)

v2.10 GA (v2.10.5)(2024 年 7 月)

这是 RediSearch 2.10 的正式发布版本

标题:

最新的 RediSearch 引入了节省内存的矢量数据类型、增强的索引功能(支持空字段和缺失字段)、简化的查询语法以及扩展的地理空间搜索功能。

2.10.5 中的新增功能

这个新的主要版本引入了新的BFLOAT16FLOAT16vector 数据类型,减少 vector 消耗的内存,同时保持准确性。此更新还包括对空值和缺失值编制索引的强烈支持,并增强了具有精确匹配功能的查询的开发人员体验。开发人员现在可以匹配TAG字段,而无需转义特殊字符,从而使载入过程和查询语法的使用更加容易。最后,地理空间搜索功能已扩展为新的INTERSECTDISJOINT运算符,并且通过提供更好的索引消耗内存报告并在聚合管道中公开全文评分,改进了人体工程学。

特征:

  • 增强精确匹配查询TAG避免使用更简单的语法转义特殊含义字符 '@tag:{"my-query%term"}'NUMERIC查询:

    • #4802 - 使用双引号将完全匹配的查询词括起来,例如@email:{"test@redis.com"}DIALECT 2( MOD-7299 的)
    • #4676#4433 - 增强查询解析器以避免不必要的转义 (MOD-5756)
    • #4527 - 增强NUMERIC使用单个值FT.SEARCH idx @numeric:[3456](MOD-6623)
    • #4802 - 在NUMERIC查询 如 equivalence 、 difference==!=、大于 和 小于 和 如>>=<<=FT.SEARCH idx '@numeric==3456'(MOD-6749)
  • 添加新关键字以支持使用INDEXEMPTY和缺失值使用INDEXMISSINGper 字段中的SCHEMA虽然使用FT.CREATE

    • #4663#4721 - 为 的空字符串值编制索引""TAGTEXT字段(MOD-6540、MOD-7200)
    • #4721 - 更新查询解析器以支持TEXTFT.SEARCH idx '@text_field:""'FT.SEARCH idx '""'TAGFT.SEARCH idx '@tag_field:{""}'(型号-7200)
    • #4720#4635 - 为所有字段类型的缺失值编制索引,引入查询语法函数ismissing(@field)启用对缺失字段的查询,如FT.SEARCH idx 'ismissing(@text)'(型号-6532)
  • 启用新的向量数据类型,减少向量消耗的内存。BFLOAT16FLOAT16

  • 在聚合管道期间使用ADDSCORE.在调用分数时,您可以使用@__scorein the pipeline 中,如FT.AGGREGATE idx 'hello' ADDSCORES SORTBY 2 @__score DESC

    • #4859 - 将分数公开给FT.AGGREGATE管道 (MOD-7190)
  • #4227 - 添加对新运算符的支持INTERSECTDISJOINT查询GEOSHAPE 多边形 (MOD-6178)

错误修复(自 2.10.4 起):

  • #4854 - 避免从数值派生时进行扩展 (MOD-7025)

改进(自 2.10.4 起):

  • #4865 - 在索引缺失字段时为清理垃圾条目添加覆盖率 (MOD-7415)
注意:
  • Redis 中的版本在语义版本控制中为 2.10.5。由于 Redis 中模块的版本是数字,因此我们无法添加 Release Candidate 标志。
  • 最小 Redis 版本:7.4
  • 如果索引和查询 RedisJSON 数据结构,此版本最好与 RedisJSON 2.8(v2.8.2 及更高版本)结合使用
  • 如果哈希键的一个或多个字段在查询开始后过期(使用 FT.SEARCH 或 FT.AGGREGATE),Redis 不考虑这些延迟过期的字段。因此,字段过期的 key 可能仍包含在查询结果中,从而导致结果可能不正确或不一致。