我使用elasticsearch滾動API來返回大量的文件。根據documentation,使用ElasticSearch Scroll API時,如何在原位優化時間參數?
「滾動到期時間刷新每次我們運行一個滾動請求,所以它只需要足夠長的時間來處理當前的一批結果,而不是所有與查詢匹配的文檔。超時非常重要,因爲保持滾動窗口處於打開狀態會消耗資源,並且我們希望在不再需要時立即釋放它們。設置超時將使Elasticsearch在一段時間不活動後自動釋放資源。「
我的問題是如何優化時間參數?我有一些需要處理大約600頁的實例,並且它會在第300頁失敗(很長一段時間!)。我懷疑如果我可以優化傳遞的時間參數,那麼使用ES資源會更有效率,而且不會失敗。此代碼正在羣集中進行測試,但將被移植到其他許多羣集中,因此我希望優化時間參數以適應羣集。另外,我不想在ES集羣上使用比我需要的其他用戶更多的資源,但也可以使用其他用戶。
這是我的想法。在最初的滾動請求中,傳遞一個慷慨的時間參數,例如5m
,然後返回結果的第一頁需要多長時間。然後在第二個滾動請求中,我們傳遞一個時間參數,它比第一個請求花費的觀察時間稍大一點。從感應上來說,每個頁面請求的時間會比先前觀察到的頁面完成時間稍長。這假設由於每個頁面都返回相同數量的文檔(在我的情況下幾乎相同大小),因此返回該頁面所需的時間與之前觀察到的大致相同。這個假設是否成立?
是否有更智能的方法來適應時間參數?對於這個問題,尺寸參數(在上面的想法中,尺寸參數保持不變)。