全部產品
Search
文件中心

OpenSearch:使用限制

更新時間:Jul 13, 2024

系統相關

每個使用者執行個體個數

不限制

每個使用者doc總數

理論上不限制,具體根據配額儲存容量計算

每個使用者pv總數

理論上不限制,具體根據配額LCU峰值計算

支援系統字元編碼

UTF-8

執行個體相關

叢集規格

共用叢集

獨享叢集

執行個體名長度

30字元

欄位名長度

30字元

排序運算式名稱長度

30字元

欄位個數

256個

512個

源表表名長度

16字元

索引欄位名

64字元

INT類欄位個數

256個

TIMESTAMP類型的欄位個數

4個

GEO_POINT類型的欄位個數

2個

LITERAL欄位個數(不支援建立為複合式索引)

256個

TEXT、SHORT_TEXT類型欄位個數

32個

64個

數值分析索引個數

4個

8個

複合式索引個數

4個

8個

單個複合式索引包含欄位數

8個

INT類型構建數值分析索引個數

4個

8個

GEO_POINT類型構建數值分析索引個數

2個

TIMESTAMP類型構建數實值型別索引個數

4個

TEXT、SHORT_TEXT類型單欄位索引個數

4個

8個

LITERAL類型單欄位索引個數

256個

INT類型構建關鍵字分析索引個數

256個

向量索引個數

0個

2個

總資料來源個數

20個

說明

高效能檢索版-獨享儲存型相關限制說明:

  • 表總數不能超過系統最大限制8個;

  • 不支援配置查詢分析、搜尋結果展示功能。

欄位相關

INT64

-2^63~2^63-1

FLOAT

+/-3.40282e+038

DOUBLE

+/-1.79769e+308

LITERAL

65535個位元組

TEXT

65536個詞

SHORT_TEXT

100位元組,超過後截斷

LITERAL_ARRAY

欄位長度總體不能超過65535個位元組(算上元素之間的2位元組的系統內建分隔字元),如果超過,則會截斷到最大滿足長度限制的最後一個完整元素為止。(效能消耗較大,推薦控制在100個元素內)

INT_ARRAY、FLOAT_ARRAY、DOUBLE_ARRAY

如果設定為屬性欄位,則限制是最多65535個元素(推薦控制在100個元素內)

排序運算式

基礎排序運算式條數

30個

業務排序運算式條數

30個

每個基礎排序可設定的特徵函數項

4個

搜尋結果摘要

描述

取值範圍

片段長度

表示摘要長度

[1,300] 位元組

片段數量

在摘要長度內需要幾個片段

[1,5]

推送資料(應用層級)

API 每次推送總文檔數上限

1000個,建議100個效能更好(建議打包推送)

API 每秒推送總次數上限

500次,超出後本次請求將失敗,並提示rate exceeds app quota

API 每次請求總容量上限

2M/s,超出後本次請求將失敗,並提示rate exceeds app quota

API 每秒請求總容量上限

2M/s,超出後本次請求將失敗,並提示rate exceeds app quota

RDS/PolarDB增量同步處理速率上限

2M/s,超出後系統將自動限速,增量資料同步延遲

每條文檔大小上限

1M,超出後該記錄同步失敗,並提示The total size of documents exceed

增量處理時效性

99%的文檔推送成功後可以在1秒內搜尋到,99.9%在1分鐘內

說明

● 超過推送資料的上限會導致增量資料同步延遲;

● 已使用的儲存容量若超出應用配額,系統將自動丟棄API推送資料的請求,擴容後需重新推送;

● 已使用的儲存容量若超出應用配額,系統將自動停止同步RDS/PolarDB的增量訊息,擴容後會自動從停止的時間點繼續同步增量資料。

● 增量資料同步tps超過限制,會導致索引重建無法追上即時增量資料,從而導致索引重建一直無法完成;

● 規格為獨享叢集執行個體的應用可以適當調整推送資料的上限;

● 若配置了RDS/PolarDB資料來源,並且同步方式選擇自動同步,OpenSearch將儘力保障同步服務的穩定性但不保障同步的延遲,如果對同步延遲比較敏感的業務建議同步方式採用DTS資料訂閱執行個體(DTS即時同步

推送資料中不能包含下列系統保留不可見字元

編碼

(emacs/vi)中的顯示形態

“\x1E\n”

^^

“\x1F\n”

^_

“\x1C”

^\

“\x1D”

^]

“\x03”

^C

說明
  • 欄位內容中若出現上述系統不支援的字元,該記錄將不會同步至應用中;

  • 不可見字元(如:\u0002、\u0003等)會被自動轉換為\t;

  • 目前引擎支援的字元集有限,如下:

    • CJK_1 (\xe2[\xba-\xbf][\x80-\xbf])

    • CJK_2 ([\xe3-\xe9][\x80-\xbf][\x80-\xbf])

    • FULLWIDTH_1 (\xef[\xbc-\xbe][\x80-\xbf])

    • FULLWIDTH_2 (\xef\xbf[\x80-\xaf])

搜尋相關

每個子句(除filter)最大長度

編碼前1k,超長後本次請求報錯丟棄

filter子句最大長度

編碼前4k,超長後本次請求報錯丟棄

單次請求最多返回結果數(不分頁)

500

搜尋返回的最大結果數(包括分頁多次請求)

5000

參與基礎排序文檔數

100萬

參與業務排序文檔數

預設200

說明
  • 傳統搜尋情境的主要目的是為了盡量短的時間內召回最符合的結果,所以對搜尋結果進行了限制,例如 search方法最多隻能召回5000條文檔。在某些情境下需要提供更多的結果來進行分析工作,可以使用scroll方法來擷取更多的結果

  • 搜尋請求若超出應用配額的LCU量,超出後的請求將被丟棄,並報錯code:6015,message:Dropped by over compute resource quota

索引重建

同步速率上限

20MB/s

SQL相關

限制項

最大值/限制條件

分類

說明

DDL/DML

N/A

不支援

全域記憶體限制

N/A

不支援

避免對全量資料排序打散並返回。如SELECT * FROM t ORER BY id LIMIT 1000000000。資料量過大時會發生OOM。

NULL類型

N/A

不支援

對Left Join等出現NULL類型的情境,會用預設值代替。

LIKE/RLIKE

N/A

不支援

LIKE/RLIKE在大數量情境下存在效能瓶頸。建議優先使用搜尋方式(QUERY函數)。

資料重分布(Re-Shuffle)

N/A

不支援

使用者需要根據業務情境和查詢模式設計好離線資料分布。引擎目前不支援跨分區的資料重分布,對於多表Join或複雜的Agg情境存在一定的限制。

使用者查詢出錯時建議分析下查詢計劃。

UDF函數名

N/A

建議項

避免與SQL關鍵字/保留字重名。重名時需要通過反引號(`)轉義。

表名/列名

N/A

格式限制

表名、列名中不能有特殊字元,以字母開頭,且只能用英文小寫字母(a-z)、英文大寫字母(A-Z)、數字和底線(_)。

統計運算元

最大Key數量: 500W

最大記憶體使用量: 512M

數量限制

上述限制為單個統計運算元。

預設返回結果數量

100

數量限制

SQL最外層沒有LIMIT子句,為了防止返回資料過多,預設會增加LIMIT 100。

數群組類型

N/A

操作限制

  1. 數群組類型的比較、查詢等需要通過udf來操作(如contain/notcontain等),不支援=、<>、IN等操作;

  2. GROUP BY不支援數群組類型,需要提前UNNEST展開,展開後資料量可能會急劇膨脹,請評估好效能惡化情況;

  3. JOIN不支援數群組類型,需要通過MULTICAST展開,JOIN後資料量可能會急劇膨脹,請評估好效能惡化情況;

動態參數

N/A

操作限制

只支援運算式中的常量替換。不支援替換欄位名、表名。不支援替換LIMIT。

ORDER BY子句

N/A

操作限制

必須與LIMIT配對使用。

UNION

N/A

操作限制

  1. 輸入表對應欄位名稱、類型、數量必須嚴格一致。

  2. (目前只支援UNION ALL。UNION不支援。

Summary表查詢

N/A

操作限制

Summary表目前不支援全表掃描,查詢時必須包括PK等值條件。

子表查詢

N/A

操作限制

子表內部表示為一個結構化類型(MultiSet)的欄位,該欄位不支援返回。查詢子表時避免使用SELECT *操作。

DATE/RANGE索引查詢

N/A

操作限制

目前不支援使用"="查詢。可以通過QUERY函數查詢,如QUERY('time', '[1, 10]')。

Attribute欄位

N/A

操作限制

SQL情境下預設所有欄位均建attribute。TEXT、SHORT_TEXT不支援運算式計算。

常量字串

N/A

N/A

1、SQL語句中的常量字串需要在兩邊加單引號如:SELECT 'abc' FROM t;

2、SQL語句中的常量字串如果自身包含了單引號,則每個單引號使用兩個單引號來表示,如

SELECT 'ab''c' FROM t; // 字串實際值為ab'c

SELECT 'ab''''c' FROM t;// 字串實際值為ab''c;

3、動態參數中字串類型的轉義問題建議參考doc