[英]Node.js puppeteer - Fetching data from txt files with no tags
[英]Fetching large data from Elasticsearch in Node.js
我正在通过他们的Node.js客户端从Elasticsearch(v7)的索引ABC
中获取约60,000
文档。 我尝试使用他们推荐的Scroll API,但这花了将近20s
。 接下来,我将索引ABC
的max_window_size
增加到100,000
(从默认的10,000
),查询花费了5s
。
我正在8核32GB RAM的机器上运行Elasticsearch v7。 我没有执行任何聚合,我的查询只是一个简单的GET请求,可从索引ABC
提取所有文档。 有没有办法通过他们的Node.js客户端将其加速到不到一秒钟?
我在Express中的代码
const { body } = await client.search({
index: 'ABC',
size: 60000,
body: {
query: {
match_all: {}
}
},
});
res.send(body.hits.hits);
如果没有其他方法可以减少时间,我是否应该将整个响应缓存在内存中,并让UI从中读取而不是直接访问ES(数据每天仅更新一次,所以我可能不需要执行缓存验证)。 我应该为此找Redis吗?
尽管我不确定您的用例是什么,但是scroll API可能不适用于为网页提供服务的Web服务器。 要在文档中引用此页面 :
滚动并不旨在用于实时用户请求,而是用于处理大量数据,例如,以便将一个索引的内容重新索引为具有不同配置的新索引。
相反,您应该使用from / size参数对结果进行分页 。 当用户界面需要显示更多项目时,您应该提交另一个API请求,以通过适当增加from
参数来拉出另一个页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.