Scroll API 返回的 Scroll id 太长
Scroll id returned by Scroll API is too long
我正在尝试使用 Scroll API 从 Kibana 日志中获取 100K 条记录。默认大小设置为 500,我无权更改它。我尝试使用以下命令滚动:
curl -XPOST "http://elasticsearch.us-central1.gcp.cloud.internal/shared/_search?scroll=1m&size=500&pretty" -H "Content-Type: application/json" -d '{
"_source": ["message"],
"query": {
"match_phrase": {
"kubernetes.container_name": {
"query": "my-container-name"
}
}
}
}'
输出看起来像这样:
{
"scroll_id": DnF1ZXJ5VGhlbkZldGNo5TkAA.... //300,000 characters long
"took" : 16626,
"timed_out" : false,
"_shards" : {
"total" : 7397,
"successful" : 7397,
"skipped" : 0,
"failed" : 0
},
"hits" : {
.....
由于scroll id太长,我无法将它传递给Scroll API来获取下一批结果。我该如何解决这个问题?这是因为分片数量多吗?有什么办法可以限制分片数量吗?
根据 discussion on ES Community,scroll_id 的长度与索引中的分片数量之间似乎存在直接关系。
建议在请求Body中传递scroll_id。例如:
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
is there any way to limit the number of shards?
- 您可以创建一个分片数量较少的新索引
- 然后使用 ReIndex API
将数据重新索引到新索引
- 无法减少现有索引的分片数量。
我正在尝试使用 Scroll API 从 Kibana 日志中获取 100K 条记录。默认大小设置为 500,我无权更改它。我尝试使用以下命令滚动:
curl -XPOST "http://elasticsearch.us-central1.gcp.cloud.internal/shared/_search?scroll=1m&size=500&pretty" -H "Content-Type: application/json" -d '{
"_source": ["message"],
"query": {
"match_phrase": {
"kubernetes.container_name": {
"query": "my-container-name"
}
}
}
}'
输出看起来像这样:
{
"scroll_id": DnF1ZXJ5VGhlbkZldGNo5TkAA.... //300,000 characters long
"took" : 16626,
"timed_out" : false,
"_shards" : {
"total" : 7397,
"successful" : 7397,
"skipped" : 0,
"failed" : 0
},
"hits" : {
.....
由于scroll id太长,我无法将它传递给Scroll API来获取下一批结果。我该如何解决这个问题?这是因为分片数量多吗?有什么办法可以限制分片数量吗?
根据 discussion on ES Community,scroll_id 的长度与索引中的分片数量之间似乎存在直接关系。
建议在请求Body中传递scroll_id。例如:
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
is there any way to limit the number of shards?
- 您可以创建一个分片数量较少的新索引
- 然后使用 ReIndex API 将数据重新索引到新索引
- 无法减少现有索引的分片数量。