本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
搜索功能和限制
搜索空房情况
ElastiCache Valkey 9.0 及以上版本支持纯非向量、向量和混合工作负载,包括所有区域中基于节点的集群上的数字 Full-text、标签(精确匹配)、矢量搜索和聚合,无需支付额外费用。 AWS
ElastiCache Valkey 版本 8.2 支持在所有 AWS 区域的基于节点的集群上进行矢量搜索,无需支付额外费用。
您还可以在现有集群上使用搜索功能,只需点击几下,即可从任何版本的 Valkey 或 Redis OSS 升级到上面提到的 Valkey 版本,无需停机。
目前,除了具有数据分层的节点外,所有 ElastiCache 实例类型均可进行搜索。在 t2、t3 和 t4g 实例上使用搜索需要将微型实例的内存预留增加到至少 50%,小型实例的内存预留至少增加到 30%。如需了解更多信息,请参阅此页面。
参数限制
下表显示了各种搜索项的限制:
| Item | 最大值 (9.0 以上) | 最大值 (8.2) |
|---|---|---|
| 向量中的维数 | 32768 | 32768 |
| 可以创建的索引数量 | 1000 | 10 |
| 索引中的字段数量 | 1000 | 50 |
| FT.SEARCH 超时子句(毫秒) | 60000 | 60000 |
| 每个索引的最大前缀数量 | 16 | 16 |
| 标签字段的最大长度 | 10000 | 10000 |
| 数值字段的最大长度 | 256 | 256 |
| HNSW M 参数 | 2000000 | 2000000 |
| HNSW EF_CONSTRUCTION 参数 | 1000000 | 4096 |
| HNSW EF_RUNTIME 参数 | 1000000 | 4096 |
| FT.SEARCH/FT.AGGREGATE 命令中允许在查询字符串中使用的术语数量 | 1000 | 16 |
| 每个索引允许的文本属性数量 | 64 | NA |
| 前缀、后缀、模糊和词干术语搜索中的最大文本单词扩展量 | 200 | NA |
操作限制
索引持久性和回填
你可以在 Valkey 搜索索引创建和回
扩展限制
在 ElastiCache Valkey 版本 9.0 中,在扩展事件期间,写入 RPS 可能会在事件持续时间内降低。在 ElastiCache Valkey 版本 8.2 中,在扩展事件期间,随着数据的迁移,索引可能会被回填,这将减少搜索查询的召回次数。
快照 import/export 和实时迁移
可以将具有搜索索引的一个集群中的 RDB 文件导入到另一个版本为 8.2 或更高版本的 ElastiCache Valkey 集群。新集群将在加载 RDB 文件时重新构建索引内容。但是,RDB 文件中存在搜索索引会限制该数据与较旧 Valkey 版本的兼容性。只有另一个拥有 Valkey 版本 8.2 或更高版本的 ElastiCache 集群才能理解由向量搜索功能定义的搜索索引的格式。但是,不包含索引的 RDB 文件不受这种限制。
在回填期间内存不足
与 Valkey OSS 写入操作类似,索引回填也受内存不足限制。如果引擎内存在回填过程中已满,则所有回填都将暂停。有可用内存后,回填过程会恢复。当由于内存不足导致回填暂停时,也可以删除索引。
事务
FT.CREATE和FT.DROPINDEX、命令不能在事务上下文中执行,也就是说,不能在MULTI/EXEC区块内或在 LUA 或 FUNCTION 脚本中执行。此外,在集群模式下运行的 ElastiCache Valkey 集群中,不能在事务上下文中执行FT.SEARCH和FT.AGGREGATE命令。
搜索安全
针对命令和数据访问的 Valkey ACL(访问控制列表)@search,并更新了许多现有类别(@fast、@read、@write 等),以包含新命令。搜索命令不会修改键数据,这意味着将保留现有的 ACL 写入访问机制。HASH 和 JSON 操作的访问规则不因索引的存在而改变;这些命令仍然受到普通键级别访问控制的约束。
带索引的搜索命令也可以通过 ACL 进行访问控制。访问检查在整个索引级别执行,而不是在每个键级别执行。这意味着,只有当用户有权访问该索引键空间前缀列表中所有可能的键时,系统才会向该用户授予对该索引的访问权限。换句话说,索引的实际内容并不能控制访问权限。用于安全检查的是前缀列表定义的索引理论内容。可能出现用户对密钥具有读 and/or 写权限但无法访问包含该密钥的索引的情况。请注意,创建或使用索引只需要具有对键空间的读取访问权限,而不考虑是否有写入访问权限。