0
私はElasticSearchの結果を得るこのメソッドを持っています。私はそれがそれらを取得している知っているので、私は結果をログに記録することができます。..なぜこの約束(async/await)が待たれていないのですか
async querySearch(queryObj) {
let hits = [];
const client = this.client;
client.search({
index: this.index,
scroll: '30s',
body: {
query: {
match: {
_all: queryObj.q,
},
},
},
}, async function getNextResults(error, response) {
console.log(' getting more... ');
response.hits.hits.forEach((hit) => {
hits.push(hit);
console.log(' >> hits is ', hits.length);
});
if (response.hits.total > hits.length) {
await client.scroll({
scrollId: response._scroll_id,
scroll: '30s'
}, await getNextResults);
} else {
console.log(`NOW ${response.hits.total} <= ${hits.length}`);
console.log(' XXX hits is ', hits.length);
// console.log('got lota of results : ', hits);
return hits;
}
});
}
しかし、発信者、ここでは、「未定義」取得し、通過させる結果を待ちませんが...
async querySearch(queryObj) {
const hits = await this.connector.querySearch(queryObj);
return hits;
}
どうしてこのようなことが起こり、どうすれば修正できますか?どのようにして私のサブ・メソッドからヒット・セットを得るのですか?
原因* querySearch *は何も(別名*不定*) –
'client.scrollを待つの予想結果は何も返しませんか? – guest271314
@ guest271314、ElasticSearchの次のセット(次のスクロールページ)を取得します。サブメソッドはスクロールページをループしてすべての結果を取得します。 – brainstormtrooper