[英]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.