请参阅下面的代码。我想要完成的是限制每批量的数量(50),但也限制了TOTAL结果的数量(1000)。但是,使用代码示例,我得到了所有匹配的记录。我究竟做错了什么?或者根本不支持。
谢谢!
桑德
var elasticsearch = require('elasticsearch');
var _ = require('lodash');
var client = new elasticsearch.Client({
host: 'host',
log: 'info'
});
var allDocuments = [];
client.search({
index: "index",
type: "type",
scroll: '30s',
size: 50,
body: {
"from": 0,
"size": 1000,
"query": {
"range": {
"updated": {
"gte": "2016-10-24T08:35:10.540Z",
"lte": "2016-10-29T20:35:10.541Z"
}
}
}
}
}, function getMoreUntilDone(error, response) {
response.hits.hits.forEach(function (hit) {
allDocuments.push(hit._source);
});
if (response.hits.total !== allDocuments.length) {
client.scroll({
scrollId: response._scroll_id,
scroll: '30s'
}, getMoreUntilDone);
} else {
console.log('count', allDocuments.length);
}
});
答案 0 :(得分:-2)
使用大小不会在1000次点击后停止查询。它只会在1000组中批量处理。而是使用terminate_after。
body: {
"from": 0,
"terminateAfter": 1000,
"query": {
"range": {
"updated": {
"gte": "2016-10-24T08:35:10.540Z",
"lte": "2016-10-29T20:35:10.541Z"
}
}
}
}