gpt4 book ai didi

elasticsearch - 用Elasticsearch搜索/滚动异步等待

转载 作者:行者123 更新时间:2023-12-02 22:36:46 25 4
gpt4 key购买 nike

我在搜索中使用了await,但是作为+30000项,我必须使用scroll

问题在于,在scroll之前,搜索的初始部分已经完成,因此await触发并且函数继续执行。我应该怎么做才能阻止这种情况?

var allTitles = [];
try {
await client.search({
index: 'myindex',
scroll: '30s',
source: ['title'],
q: 'title:test'
}, function getMoreUntilDone(error, response) {
response.hits.hits.forEach(function (hit) {
allTitles.push(hit._source.title);
});
if (response.hits.total > allTitles.length) {
client.scroll({
scrollId: response._scroll_id,
scroll: '30s'
}, getMoreUntilDone);
} else {
console.log('every "test" title', allTitles);
}
});
} catch (err) {
console.log(err)
}

最佳答案

所以,我将其重新编写,以便在这里帮助任何需要它的人。

var stuff = []
const q = {params}

const searchstuff = (q) => {
return new Promise((resolve, reject) => {
const get = x => {
stuff = stuff.concat(x.hits.hits)
if (x.hits.total > stuff.length) {
this.client.scroll({ scrollId: x._scrollId, scroll: '10s'}).then(get)
} else {
resolve(stuff)
}
}
this.client.search(q).then(get).catch(reject)
})
}

const search = await searchstuff(q)
if (search) console.log('Searched')

关于elasticsearch - 用Elasticsearch搜索/滚动异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237736/

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