gpt4 book ai didi

node.js - Elasticsearch 在 Node js 中使用滚动显示所有结果

转载 作者:行者123 更新时间:2023-11-29 02:45:21 24 4
gpt4 key购买 nike

我基本上是想显示索引类型的所有记录。现在,如果您在查询中使用 match_all(),则 elasticsearch 默认显示 10 个结果。可以使用滚动显示所有结果。我正在尝试实现 scroll api,但无法使其正常工作。它只显示 10 个结果,我的代码:

module.exports.searchAll = function (searchData, callback) {

client.search({
index: 'test',
type: 'records',
scroll: '10s',
//search_type: 'scan', //if I use search_type then it requires size otherwise it shows 0 result
body: {
query: {
"match_all": {}
}
}
}, function (err, resp) {
client.scroll({
scrollId: resp._scroll_id,
scroll: '10s'
}, callback(resp.hits.hits));
});
}

有人可以帮忙吗?

最佳答案

您需要反复调用client.scroll,直到没有更多的记录返回。有个好example in the elasticsearch documentation .我在下面复制了他们的示例代码,稍作修改以匹配您的问题

var allRecords = [];

// first we do a search, and specify a scroll timeout
client.search({
index: 'test',
type: 'records',
scroll: '10s',
body: {
query: {
"match_all": {}
}
}
}, function getMoreUntilDone(error, response) {
// collect all the records
response.body.hits.hits.forEach(function (hit) {
allRecords.push(hit);
});

if (response.body.hits.total.value !== allRecords.length) {
// now we can call scroll over and over
client.scroll({
scroll_id: response.body._scroll_id,
scroll: '10s'
}, getMoreUntilDone);
} else {
console.log('all done', allRecords);
}
});

关于node.js - Elasticsearch 在 Node js 中使用滚动显示所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39620225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com