

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搜尋功能和限制
<a name="search-features-limits"></a>

## 搜尋可用性
<a name="search-availability"></a>

ElastiCache Valkey 9.0 版及更高版本支援純非向量、向量和混合工作負載，包括數字、標籤 （完全相符）、全文、向量搜尋，以及所有 AWS 區域中節點型叢集上的彙總，無需額外費用。

ElastiCache Valkey 8.2 版支援在所有 AWS 區域中節點型叢集上的向量搜尋，無需額外費用。

您也可以透過從任何版本的 Valkey 或 Redis OSS 升級到上述的 Valkey 版本，在現有叢集上使用搜尋，只需[按幾下滑鼠，就不會停機](VersionManagement.HowTo.md)。

除了具有資料分層的節點以外，搜尋目前可用於所有 ElastiCache 執行個體類型。在 t2、t3 和 t4g 執行個體上使用搜尋，需要將微型執行個體的記憶體保留增加到至少 50%，小型執行個體增加到 30%。如需詳細資訊，請參閱[此頁面](redis-memory-management.md)。

## 參數限制
<a name="parametric-restrictions"></a>

下表顯示各種搜尋項目的限制：


**搜尋限制**  

| 項目 | 最大值 (9.0\+) | 最大值 (8.2) | 
| --- | --- | --- | 
| 向量中的維度數量 | 32768 | 32768 | 
| 可建立的索引數量 | 1000 | 10 | 
| 索引中的欄位數目 | 1000 | 50 | 
| FT.SEARCH TIMEOUT 子句 （毫秒） | 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 | 

## 操作限制
<a name="operational-restrictions"></a>

### 索引持續性和回填
<a name="index-persistence-backfilling"></a>

您可以在 [Valkey 搜尋索引建立和回填](https://valkey.io/topics/search/#index-creation-and-backfill)中閱讀更多相關資訊。

### 擴展限制
<a name="scaling-limits"></a>

在 ElastiCache Valkey 9.0 版中，在擴展事件期間，寫入 RPS 可能會在事件期間減少。在 ElastiCache Valkey 8.2 版中，在擴展事件期間，索引可能會在資料遷移時進行回填，這會導致搜尋查詢的召回減少。

### 快照匯入/匯出和即時遷移
<a name="snapshot-import-export"></a>

來自具有搜尋索引之叢集的 RDB 檔案可以匯入至版本 8.2 或更新版本的另一個 ElastiCache Valkey 叢集。新叢集會在載入 RDB 檔案時重建索引內容。不過，RDB 檔案中存在搜尋索引會限制該資料與舊版 Valkey 的相容性。只有另一個具有 Valkey 8.2 版或更新版本的 ElastiCache 叢集，才能了解向量搜尋功能定義的搜尋索引格式。不過，不包含索引的 RDB 檔案不會以此方式受到限制。

### 回填期間記憶體不足
<a name="out-of-memory-backfill"></a>

與 Valkey OSS 寫入操作類似，索引回填會out-of-memory的限制。如果在回填進行時填滿引擎記憶體，則會暫停所有回填。如果記憶體可用，則會繼續回填程序。當因記憶體不足而暫停回填時，可以刪除索引。

### 交易
<a name="transactions"></a>

命令 `FT.CREATE`和 `FT.DROPINDEX`無法在交易內容中執行，即不在`MULTI/EXEC`區塊內或在 LUA 或 FUNCTION 指令碼內。此外，在叢集模式下操作的 ElastiCache Valkey 叢集中，無法在交易內容中執行 `FT.SEARCH`和 `FT.AGGREGATE`命令。

## 搜尋安全性
<a name="search-security"></a>

命令和資料存取的 [Valkey ACL （存取控制清單）](https://valkey.io/topics/acl/) 安全機制都會擴展，以控制搜尋設施。完全支援個別搜尋命令的 ACL 控制。提供了新的 ACL 類別 `@search`，並更新了許多現有類別 (`@fast`、`@write`、 `@read`等），以包含新的命令。搜尋命令不會修改金鑰資料，這表示會保留用於寫入存取的現有 ACL 機器。索引的存在不會修改 `HASH`和 `JSON`操作的存取規則；一般金鑰層級存取控制仍會套用至這些命令。

具有 索引的搜尋命令也會透過 ACL 控制其存取。存取檢查是在整個索引層級執行，而不是在每個金鑰層級。這表示只有在該使用者具有存取該索引之金鑰空間字首清單中所有可能金鑰的許可時，才會將索引的存取權授予使用者。換句話說，索引的實際內容不會控制存取。相反地，它是 索引的理論內容，由用於安全檢查的字首清單所定義。可能發生使用者對金鑰具有讀取和/或寫入存取權，但無法存取包含該金鑰的索引的情況。請注意，建立或使用索引只需要對 金鑰空間的讀取存取權 – 不會考慮是否存在寫入存取權。