在 Elasticsearch v7.3 中,滚动上下文保持打开状态并且永远不会被删除或过期?

Yas*_*don 5 elasticsearch

我正在使用 ES v7.3 并使用切片从 ES 流式传输数据,但我观察到,在我们流式传输数据几次后,一些滚动上下文保持打开状态,并且它们保持打开状态数天,并且不会过期或终止,因此搜索继续进行,并且观察到 CPU 峰值较高。此外,在日志中我们还收到以下消息

[2020-02-07T06:49:33,559][DEBUG][o.e.a.s.TransportSearchScrollAction] [ip-1-0-104-220] [1234717] Failed to execute query phase
org.elasticsearch.transport.RemoteTransportException: [ip-1-0-104-220][1.0.104.220:9300][indices:data/read/search[phase/query/scroll]]
Caused by: org.elasticsearch.search.SearchContextMissingException: No search context found for id [1234717]
    at org.elasticsearch.search.SearchService.getExecutor(SearchService.java:462) ~[elasticsearch-7.3.1.jar:7.3.1]
    at org.elasticsearch.search.SearchService.runAsync(SearchService.java:344) ~[elasticsearch-7.3.1.jar:7.3.1]
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:401) ~[elasticsearch-7.3.1.jar:7.3.1]
    at org.elasticsearch.action.search.SearchTransportService.lambda$registerRequestHandler$10(SearchTransportService.java:367) ~[elasticsearch-7.3.1.jar:7.3.1]
    at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$1.doRun(SecurityServerTransportInterceptor.java:257) [x-pack-security-7.3.1.jar:7.3.1]
Run Code Online (Sandbox Code Playgroud)

如果我们缺少索引级别的任何设置,我们将请求是否有人可以指导我们,我们应该强制执行这些设置,以便这些打开的上下文在达到超时后被杀死或过期。

要检查和删除打开的上下文,我分别使用以下命令,

GET _nodes/stats/indices?filter_path=**.open_contexts
DELETE /_search/scroll/_all
Run Code Online (Sandbox Code Playgroud)

此外,我的超时是,

exports.ELASTICSEARCH = {
  PARALLEL_SLICES : 2,
  SCROLL_ALIVE_TIME : '5m',
  SLICE_ALIVE_TIME : '1m',
  SCROLL_SIZE : 10000,
  REQUEST_RETRY_COUNT : 5,
  REQUEST_TIMEOUT : 120000, // in milliSecond
  ERROR_RETRY_COUNT : 3

};

Run Code Online (Sandbox Code Playgroud)