我无法获取所有物品,最大不能超过大小:10000。 谢谢
错误:[query_phase_execution_exception]结果窗口太大, from + size必须小于或等于:[10000],但为[90000]。 请参阅滚动API,以更有效地请求大数据 套。可以通过更改[index.max_result_window]设置此限制 索引级别参数。
任何想法我该如何解决?
GetTweets: function (callback) {
client.search({
index: 'twitter',
type: 'tweet',
size:10000,
body: {
query: {
"query": {
"match_all": {}
}
}
}
}, function (err, resp, status) {
callback(err,resp);
});
},
答案 0 :(得分:1)
search_after
可用于应用分页。比Scroll Api更为有效
GET twitter/_search
{
"size": 10,
"query": {
"match" : {
"title" : "elasticsearch"
}
},
"search_after": [1463538857, "654323"],
"sort": [
{"date": "asc"},
{"tie_breaker_id": "asc"}
]
}
ES文档:
It is very similar to the scroll API but unlike it, the search_after parameter is stateless, it is always resolved against the latest version of the searcher
答案 1 :(得分:0)
Elasticsearch的默认功能是在 10000 窗口之后即刻不立即获取数据。 size:10000
或更高。在scroll api处请参见此处,由于该限制,您将无法获得错误提示。
“结果”窗口太大,“ +”号必须小于或等于:[10000]
尝试滚动API 之类的
curl -XGET 'localhost:9200/twitter/tweet/_search?scroll=1m' -d '
{
"query": {
"match" : {
"title" : "elasticsearch"
}
}
}
'
上述请求的结果中包含一个_scroll_id
,该curl -XGET 'localhost:9200/_search/scroll' -d'
{
"scroll" : "1m",
"scroll_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1"
}
'
应该传递给滚动API以便检索下一个批结果。
python
NB 我已经使用了php
和errors
版本的Elasticsearch客户端api。滚动API确实很棒,而且非常灵活,可以使用它来获取数据集。