天天看點

ES報錯Result window is too large問題處理

我在使用Elasticsearch進行search查詢的過程中,出現了<code>Result window is too large</code>問題。

這裡簡單做一個報錯複現:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<code>In [</code><code>1</code><code>]: </code><code>import</code> <code>requests</code>

<code>In [</code><code>2</code><code>]: requests.get(</code><code>'http://127.0.0.1:9200/cmdb-now/_search?page=1&amp;size=10000000'</code><code>).json()</code>

<code>Out[</code><code>2</code><code>]:</code>

<code>{</code>

<code>    </code><code>u</code><code>'error'</code><code>: {</code>

<code>        </code><code>u</code><code>'failed_shards'</code><code>: [</code>

<code>            </code><code>{</code>

<code>                </code><code>u</code><code>'index'</code><code>: u</code><code>'cmdb-now'</code><code>,</code>

<code>                </code><code>u</code><code>'node'</code><code>: u</code><code>'ldeZMZRAR6uZpAiIr5QxBQ'</code><code>,</code>

<code>                </code><code>u</code><code>'reason'</code><code>: {</code>

<code>                    </code><code>u</code><code>'reason'</code><code>: u</code><code>'Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.'</code><code>,</code>

<code>                    </code><code>u</code><code>'type'</code><code>: u</code><code>'query_phase_execution_exception'</code>

<code>                </code><code>},</code>

<code>                </code><code>u</code><code>'shard'</code><code>: </code><code>0</code>

<code>            </code><code>}</code>

<code>        </code><code>],</code>

<code>        </code><code>u</code><code>'grouped'</code><code>: </code><code>True</code><code>,</code>

<code>        </code><code>u</code><code>'phase'</code><code>: u</code><code>'query'</code><code>,</code>

<code>        </code><code>u</code><code>'reason'</code><code>: u</code><code>'all shards failed'</code><code>,</code>

<code>        </code><code>u</code><code>'root_cause'</code><code>: [</code>

<code>                </code><code>u</code><code>'reason'</code><code>: u</code><code>'Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.'</code><code>,    </code>

<code>                </code><code>u</code><code>'type'</code><code>: u</code><code>'query_phase_execution_exception'</code>

<code>        </code><code>u</code><code>'type'</code><code>: u</code><code>'search_phase_execution_exception'</code>

<code>    </code><code>},</code>

<code>    </code><code>u</code><code>'status'</code><code>: </code><code>500</code>

<code>}</code>

從上面的報錯資訊,可以看到ES提示我結果視窗太大了,目前最大值為10000,而我卻要求給我10000000。并且在後面也提到了要求我修改<code>index.max_result_window</code>參數來增大結果視窗大小。

我google了修改方法,指令如下:

<code>curl -XPUT http:</code><code>//127</code><code>.0.0.1:9200</code><code>/cmdb-now/_settings</code> <code>-d </code><code>'{ "index" : { "max_result_window" : 100000000}}'</code>

需要注意的是,<code>cmdb-now</code>這裡是我ES索引的名字,是以你需要它替換成你對應的索引名稱進行修改。

本文轉自 aaao 51CTO部落格,原文連結:http://blog.51cto.com/nolinux/1786656,如需轉載請自行聯系原作者