我使用scroll
在elasticsearch中获取数据(版本:7.0.0)。但是,当我使用它时,抛出了异常。
GET /index-name/_search?scroll=1m
{
"size": 100,
"query": {
"match_all" : {}
}
}
{
"error": {
"root_cause": [
{
"type": "exception",
"reason": "Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "nr-v1",
"node": "jVqXndodRtqsZ4Srh9eHSg",
"reason": {
"type": "exception",
"reason": "Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."
}
}
]
},
"status": 500
}
然后我用GET /_nodes/stats/indices/search
检查节点状态,响应:
{
"_nodes": {
"total": 3,
"successful": 3,
"failed": 0
},
"cluster_name": "bprc",
"nodes": {
"AdT9tX_jRqiuRyNnYunRdg": {
"timestamp": 1557036722528,
"name": "es2",
"transport_address": "192.168.99.74:9300",
"host": "192.168.99.74",
"ip": "192.168.99.74:9300",
"roles": [
"master",
"data",
"ingest"
],
"attributes": {
"ml.machine_memory": "16819453952",
"ml.max_open_jobs": "20",
"xpack.installed": "true"
},
"indices": {
"search": {
"open_contexts": 502,
"query_total": 3171,
"query_time_in_millis": 2490,
"query_current": 0,
"fetch_total": 538,
"fetch_time_in_millis": 951,
"fetch_current": 0,
"scroll_total": 2020,
"scroll_time_in_millis": 1948250008,
"scroll_current": 502,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
}
}
},
......
我的问题: 1.如何解决有关“尝试创建太多滚动上下文。必须小于或等于:[500]”的例外的问题。
"scroll_total": 2020,
"scroll_time_in_millis": 1948250008,
"scroll_current": 502
这三个属性的作用是什么?
答案 0 :(得分:4)
我能够通过增加滚动上下文的最大数量来解决此问题:
curl -x "" -X PUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d'{
"persistent" : {
"search.max_open_scroll_context": 1024
},
"transient": {
"search.max_open_scroll_context": 1024
}
}'
答案 1 :(得分:0)
我遇到了同样的问题,我的解决方法是每次使用后都明确清除滚动
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);
restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
,不需要更改max_open_scroll_context