Limits

Updated at:

System limits

Item

Value

Number of instances per user

Unlimited

Total number of documents per user

Unlimited in theory. The actual limit is calculated based on the storage capacity quota.

Total number of page views (PVs) per user

Unlimited in theory. The actual limit is calculated based on the peak LCU quota.

Supported system character encoding

UTF-8

Instance limits

Item

Value

Cluster specification

Shared cluster

Exclusive cluster

Instance name length

30 characters

Field name length

30 characters

Sort expression name length

30 characters

Number of fields

256

512

Source table name length

16 characters

Index field name

64 characters

Number of INT fields

256

Number of TIMESTAMP fields

4

Number of GEO_POINT fields

2

Number of LITERAL fields (cannot be used to create composite indexes)

256

Number of TEXT and SHORT_TEXT fields

32

64

Number of numeric analysis indexes

4

8

Number of composite indexes

4

8

Number of fields in a single composite index

8

Number of numeric analysis indexes built on INT fields

4

8

Number of numeric analysis indexes built on GEO_POINT fields

2

Number of numeric indexes built on TIMESTAMP fields

4

Number of single-field indexes on TEXT and SHORT_TEXT fields

4

8

Number of single-field indexes on LITERAL fields

256

Number of keyword analysis indexes built on INT fields

256

Number of vector indexes

0

2

Total number of data sources

20

Note

Limits of OpenSearch High-performance Search Edition - exclusive storage-optimized instances:

  • The total number of tables cannot exceed the system maximum of 8.

  • The query analysis and search result display features cannot be configured.

Field limits

Item

Value

INT64

-2^63~2^63-1

FLOAT

+/-3.40282e+038

DOUBLE

+/-1.79769e+308

LITERAL

65,535 bytes

TEXT

65,536 terms

SHORT_TEXT

100 bytes. Content that exceeds this limit is truncated.

LITERAL_ARRAY

The total length of the field cannot exceed 65,535 bytes, including the 2-byte built-in system delimiters between elements. If the limit is exceeded, the field is truncated to the last complete element that satisfies the length limit. (This consumes considerable performance resources. We recommend that you keep the number of elements within 100.)

INT_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY

If the field is configured as an attribute field, it can contain a maximum of 65,535 elements. (We recommend that you keep the number of elements within 100.)

Sort expressions

Item

Value

Number of basic sort expressions

30

Number of business sort expressions

30

Number of feature function items that can be configured for each basic sort

4

Search result summaries

Item

Description

Valid values

Snippet length

The length of the summary

[1,300] bytes

Number of snippets

The number of snippets required within the summary length

[1,5]

Data push (application level)

Item

Value

Maximum total number of documents per API push

1,000. We recommend 100 for better performance. (We recommend that you push documents in batches.)

Maximum total number of API pushes per second

500. If the limit is exceeded, the request fails and the rate exceeds app quota error is returned.

Maximum total size per API request

2M/s. If the limit is exceeded, the request fails and the rate exceeds app quota error is returned.

Maximum total request size per second for the API

2M/s. If the limit is exceeded, the request fails and the rate exceeds app quota error is returned.

Maximum incremental synchronization rate for RDS/PolarDB

2M/s. If the limit is exceeded, the system automatically throttles the rate, and incremental data synchronization is delayed.

Maximum size per document

1M. If the limit is exceeded, the record fails to be synchronized and the The total size of documents exceed error is returned.

Incremental processing timeliness

99% of documents can be searched within 1 second after they are pushed, and 99.9% within 1 minute.

Note

● If the data push limits are exceeded, incremental data synchronization is delayed.

● If the used storage capacity exceeds the application quota, the system automatically discards API data push requests. After you scale out, you must push the data again.

● If the used storage capacity exceeds the application quota, the system automatically stops synchronizing incremental messages from RDS/PolarDB. After you scale out, the system automatically resumes synchronizing incremental data from the point in time when synchronization stopped.

● If the TPS of incremental data synchronization exceeds the limit, index rebuilding cannot catch up with real-time incremental data, and as a result the index rebuilding never completes.

● For applications that use exclusive cluster instances, the data push limits can be adjusted as needed.

● If you configure an RDS/PolarDB data source and select Automatic Synchronization as the synchronization method, OpenSearch makes its best effort to ensure the stability of the synchronization service but does not guarantee synchronization latency. For businesses that are sensitive to synchronization latency, we recommend that you use a DTS data subscription instance (DTS real-time synchronization) as the synchronization method.

Pushed data cannot contain the following system-reserved invisible characters

Encoding

Display form (in emacs/vi)

“\x1E\n”

^^

“\x1F\n”

^_

“\x1C”

^\

“\x1D”

^]

“\x03”

^C

Note
  • If field content contains any of the preceding characters that are not supported by the system, the record is not synchronized to the application.

  • Invisible characters (such as \u0002 and \u0003) are automatically converted to \t.

  • The engine currently supports a limited set of character sets, as listed below:

    • 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])

Search limits

Item

Value

Maximum length of each clause (except filter)

1k before encoding. If the limit is exceeded, an error is returned and the request is discarded.

Maximum length of the filter clause

4k before encoding. If the limit is exceeded, an error is returned and the request is discarded.

Maximum number of results returned per request (without paging)

500

Maximum number of results returned by a search (including multiple paged requests)

5000

Number of documents involved in basic sort

1,000,000

Number of documents involved in business sort

200 by default

Note
  • The main purpose of traditional search scenarios is to retrieve the most relevant results in the shortest possible time. Therefore, search results are limited. For example, the search method can retrieve a maximum of 5,000 documents. In some scenarios where more results are required for analysis, you can use scroll method to obtain more results.

  • If search requests exceed the LCU quota of the application, the excess requests are discarded and the following error is returned: code:6015, message:Dropped by over compute resource quota.

Index rebuilding

Item

Value

Maximum synchronization rate

20MB/s

SQL limits

Limit item

Maximum value/Limit condition

Category

Description

DDL/DML

N/A

Not supported

Global memory limit

N/A

Not supported

Avoid sorting, shuffling, and returning the full data set, such as SELECT * FROM t ORDER BY id LIMIT 1000000000. An out-of-memory (OOM) error occurs if the data volume is too large.

NULL type

N/A

Not supported

In scenarios where NULL values occur, such as Left Join, default values are used instead.

LIKE/RLIKE

N/A

Not supported

LIKE/RLIKE has performance bottlenecks in scenarios with large data volumes. We recommend that you use search (the QUERY function) first.

Data redistribution (Re-Shuffle)

N/A

Not supported

You need to design the offline data distribution based on your business scenarios and query patterns. The engine currently does not support cross-shard data redistribution, which imposes certain limits on multi-table Join or complex Agg scenarios.

If a query error occurs, we recommend that you analyze the query plan.

UDF name

N/A

Recommendation

Avoid using names that are the same as SQL keywords or reserved words. If a name is the same, escape it with backticks (`).

Table name/Column name

N/A

Format limit

Table names and column names cannot contain special characters. They must start with a letter and can contain only lowercase letters (a-z), uppercase letters (A-Z), digits, and underscores (_).

Aggregation operator

Maximum number of keys: 5,000,000

Maximum memory usage: 512M

Quantity limit

The preceding limits apply to a single aggregation operator.

Default number of returned results

100

Quantity limit

If the outermost layer of an SQL statement has no LIMIT clause, LIMIT 100 is added by default to prevent excessive data from being returned.

Array type

N/A

Operation limit

  1. Comparisons, queries, and other operations on arrays must be performed by using UDFs (such as contain/notcontain). Operations such as =, <>, and IN are not supported.

  2. GROUP BY does not support the array type. Arrays must be expanded by using UNNEST in advance. The data volume may increase sharply after expansion, so evaluate the potential performance degradation.

  3. JOIN does not support the array type. Arrays must be expanded by using MULTICAST. The data volume may increase sharply after JOIN, so evaluate the potential performance degradation.

Dynamic parameters

N/A

Operation limit

Only constants in expressions can be replaced. Field names, table names, and LIMIT cannot be replaced.

ORDER BY clause

N/A

Operation limit

Must be used together with LIMIT.

UNION

N/A

Operation limit

  1. The names, types, and number of corresponding fields in the input tables must be strictly consistent.

  2. (Currently, only UNION ALL is supported. UNION is not supported.

Summary table query

N/A

Operation limit

Summary tables currently do not support full table scans. Queries must include an equality condition on the PK.

Sub-table query

N/A

Operation limit

A sub-table is internally represented as a field of a structured type (MultiSet), and this field cannot be returned. Avoid using SELECT * when you query sub-tables.

DATE/RANGE index query

N/A

Operation limit

Queries that use "=" are currently not supported. You can use the QUERY function instead, such as QUERY('time', '[1, 10]').

Attribute field

N/A

Operation limit

In SQL scenarios, attributes are created for all fields by default. TEXT and SHORT_TEXT fields do not support expression calculation.

Constant string

N/A

N/A

1. Constant strings in SQL statements must be enclosed in single quotation marks, such as: SELECT 'abc' FROM t;

2. If a constant string in an SQL statement contains single quotation marks, each single quotation mark must be represented by two single quotation marks, such as

SELECT 'ab''c' FROM t; // The actual value of the string is ab'c

SELECT 'ab''''c' FROM t; // The actual value of the string is ab''c;

3. For information about escaping string-type values in dynamic parameters, we recommend that you refer to doc.