簡體   English   中英

在Node.js中從Elasticsearch獲取大數據

[英]Fetching large data from Elasticsearch in Node.js

我正在通過他們的Node.js客戶端從Elasticsearch(v7)的索引ABC中獲取約60,000文檔。 我嘗試使用他們推薦的Scroll API,但這花了將近20s 接下來,我將索引ABCmax_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM