Skip to content

Commit d832cb6

Browse files
authored
[8.x] ESQL: supplement docs on LIMIT (#125967) (#126396)
Backport of #125839.
1 parent 33e4bab commit d832cb6

File tree

2 files changed

+41
-11
lines changed

2 files changed

+41
-11
lines changed

docs/reference/esql/esql-limitations.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
[[esql-max-rows]]
1010
=== Result set size limit
1111

12-
By default, an {esql} query returns up to 1000 rows. You can increase the number
12+
By default, an {esql} query returns up to 1,000 rows. You can increase the number
1313
of rows up to 10,000 using the <<esql-limit>> command.
1414
include::processing-commands/limit.asciidoc[tag=limitation]
1515

docs/reference/esql/processing-commands/limit.asciidoc

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,54 @@ The maximum number of rows to return.
2222
The `LIMIT` processing command enables you to limit the number of rows that are
2323
returned.
2424
// tag::limitation[]
25-
Queries do not return more than 10,000 rows, regardless of the `LIMIT` command's
26-
value.
25+
For instance,
26+
```
27+
FROM index | WHERE field = "value"
28+
```
29+
is equivalent to:
30+
```
31+
FROM index | WHERE field = "value" | LIMIT 1000
32+
```
2733

28-
This limit only applies to the number of rows that are retrieved by the query.
29-
Queries and aggregations run on the full data set.
34+
Queries do not return more than 10,000 rows, regardless of the `LIMIT` command’s value. This is a configurable upper limit.
3035

3136
To overcome this limitation:
3237

33-
* Reduce the result set size by modifying the query to only return relevant
34-
data. Use <<esql-where>> to select a smaller subset of the data.
35-
* Shift any post-query processing to the query itself. You can use the {esql}
36-
<<esql-stats-by>> command to aggregate data in the query.
38+
* Reduce the result set size by modifying the query to only return relevant data. Use <<esql-where>> to select a smaller subset of the data.
39+
* Shift any post-query processing to the query itself. You can use the {esql} <<esql-stats-by>> command to aggregate data in the query.
3740

38-
The default and maximum limits can be changed using these dynamic cluster
39-
settings:
41+
The upper limit only applies to the number of rows that are output by the query, not to the number of documents it processes: the query runs on the full data set.
42+
43+
Consider the following two queries:
44+
```
45+
FROM index | WHERE field0 == "value" | LIMIT 20000
46+
```
47+
and
48+
```
49+
FROM index | STATS AVG(field1) BY field2 | LIMIT 20000
50+
```
51+
52+
In both cases, the filtering by `field0` in the first query or the grouping by `field2` in the second is applied over all the documents present in the `index`, irrespective of their number or indexes size. However, both queries will return at most 10,000 rows, even if there were more rows available to return.
53+
54+
The default and maximum limits can be changed using these dynamic cluster settings:
4055

4156
* `esql.query.result_truncation_default_size`
4257
* `esql.query.result_truncation_max_size`
58+
59+
However, doing so involves trade-offs. A larger result-set involves a higher memory pressure and increased processing times; the internode traffic within and across clusters can also increase.
60+
61+
These limitations are similar to those enforced by the <<paginate-search-results>>.
62+
63+
[%header.monospaced.styled,format=dsv,separator=|]
64+
|===
65+
66+
Functionality | Search | {esql}
67+
Results returned by default | 10 | 1.000
68+
Default upper limit | 10,000 | 10,000
69+
Specify number of results | `size` | `LIMIT`
70+
Change default number of results | n/a | esql.query.result_truncation_default_size
71+
Change default upper limit | index-max-result-window | esql.query.result_truncation_max_size
72+
|===
4373
// end::limitation[]
4474

4575
*Example*

0 commit comments

Comments
 (0)