RediSearch 2.8 发布说明

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

需求

RediSearch v2.8.21 需要:

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

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 FT.PROFILEAGGREGATE 数值查询中可能会因为在大范围数值中重用内部 CURSOR 而导致崩溃 (MOD-7454)

v2.8.16 (2024年8月)

这是RediSearch 2.8的维护版本。

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

  • Bug 修复:

    • #4896 - 在集群模式下,带有 VERBATIM 选项的 FT.AGGREGATE 未被分片处理 (MOD-7463)
    • #4917 - 类似于 "is|the" 的联合查询,以两个 stopwords 开头可能导致崩溃 (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:存在一个可能影响部分用户的关键错误。请升级!

  • Bug 修复:

    • #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 当使用FT.AGGREGATEAPPLY 'split(...)'时,分片变得无响应(MOD-6759)
    • #4556 当使用通配符查询时,FT.EXPLAIN返回额外的}(MOD-6768)
    • #4646 使用DD标志的FT.DROPINDEX在一个AA集群中删除了键,但在其他集群中没有删除(MOD-1855)
  • 改进:

    • #4595 报告TAGTEXT尝试的内存 (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.AGGREGATELOAD阶段时,执行加载器未能缓冲正确结果,可能导致崩溃 (MOD-6385)
  • 改进:

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

v2.8.10 (2024年1月)

这是RediSearch 2.8的维护版本。

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

详情:

  • Bug 修复:

    • #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 由于倒排索引树中节点不平衡导致数据库内存过度增长 (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超时策略下从游标指示超时 (MOD-5990)
    • #4147 初始化最大数值范围,导致索引叶分裂的更好平衡 (MOD-6232)
    • #3940 当谓词包含多个INTERSECTION (AND) 的UNION (OR) 时的查询优化 (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 清理索引后,垃圾回收可能导致唯一值损坏 (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 3中的FT.AGGREGATEAPPLY阶段,lower()upper()函数损坏 (MOD-5041)
    • #3752FT.AGGREGATE中设置较低的MAXIDLE参数值导致崩溃 (MOD-5608)
    • #3780 错误的文档长度计算导致分数值不正确 (MOD-5622)
    • #3808FILTER步骤之后的LOAD步骤可能导致FT.AGGREGATE崩溃 (MOD-5267)
    • #3823 APPLYFILTER解析器泄漏 (MOD-5751)
    • #3837 使用TLS的连接在Redis 7.2上失败 (MOD-5768)
    • #3856 向OSS集群添加新节点导致崩溃 (MOD-5778)
    • #3854 由于内存损坏,向量范围查询可能导致内存不足 (MOD-5791)
  • 改进:

    • #3534 Vector Similarity 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字段类型。除了当前在地理范围查询中使用的GEOGEOPOINT的别名)外,我们还增加了对POLYGONPOINT作为新的地理形状格式的支持(新的GEOSHAPE)。此外,2.8版本带来了使用FT.SEARCHFT.AGGREGATE进行SORT BY操作的性能改进,以及仅在RESP3中增强FT.SEARCHFT.AGGREGATE响应的新FORMAT

功能:

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

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

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

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

    • 目前仅支持WITHINCONTAINS操作符与GEOSHAPES

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

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

  • 介绍在DIALECT 4上默认对FT.SEARCHFT.AGGREGATE的排序操作进行性能优化。它将在以下四种不同场景中提高性能:

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

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

    • 混合 - 当对数字字段进行SORTBY排序并附加另一个非数字过滤器时应用。一些结果将被过滤,初始范围可能不够大。然后迭代器在以下范围内重新开始,并进行额外的迭代以收集LIMIT请求的结果。

    • 无优化 - 如果按分数或非数字字段排序,除了检索所有结果并比较它们的值外,没有其他选择。

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

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

改进(自2.8.3版本以来):

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

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

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

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

行为变更:

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

  • 最低Redis版本:7.2

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

RATE THIS PAGE
Back to top ↑