View a markdown version of this page

搜索功能和限制 - Amazon ElastiCache

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

搜索功能和限制

搜索空房情况

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.CREATEFT.DROPINDEX、命令不能在事务上下文中执行,也就是说,不能在MULTI/EXEC区块内或在 LUA 或 FUNCTION 脚本中执行。此外,在集群模式下运行的 ElastiCache Valkey 集群中,不能在事务上下文中执行FT.SEARCHFT.AGGREGATE命令。

搜索安全

针对命令和数据访问的 Valkey ACL(访问控制列表)安全机制已扩展到控制搜索工具。系统完全支持针对单个搜索命令进行 ACL 控制。提供了一个新的 ACL 类别 @search,并更新了许多现有类别(@fast@read@write 等),以包含新命令。搜索命令不会修改键数据,这意味着将保留现有的 ACL 写入访问机制。HASHJSON 操作的访问规则不因索引的存在而改变;这些命令仍然受到普通键级别访问控制的约束。

带索引的搜索命令也可以通过 ACL 进行访问控制。访问检查在整个索引级别执行,而不是在每个键级别执行。这意味着,只有当用户有权访问该索引键空间前缀列表中所有可能的键时,系统才会向该用户授予对该索引的访问权限。换句话说,索引的实际内容并不能控制访问权限。用于安全检查的是前缀列表定义的索引理论内容。可能出现用户对密钥具有读 and/or 写权限但无法访问包含该密钥的索引的情况。请注意,创建或使用索引只需要具有对键空间的读取访问权限,而不考虑是否有写入访问权限。