2015-08-29 41 views
0

我想填充一個索引,但只有在完成後才能使其可搜索。有沒有一種標準的方式來進行彈性搜索?我想我可以設置"index.blocks.read": true,但是我想要一種能夠彈性查詢可搜索索引列表的方法,並且我不知道如何使用該設置來執行此操作。關閉/打開索引感覺有點麻煩。我可以將彈性搜索索引標記爲不完整嗎?我可以檢索「完整」索引列表嗎?

我找到的解決方案是將文檔添加到定義該索引狀態的每個索引。雖然查詢索引列表有點煩人。具體而言,因爲查詢和分類2000多份索引狀態文件的長列表是有問題的。滾動掃描是一種解決方案,因爲它一次性提供了所有結果(因爲每個分片最多隻有一個索引狀態文檔)。雖然這感覺就像我使用錯誤的工具進行工作(即滾動掃描操作始終只執行一次滾動)。

我不想要一個引用所有索引的文檔,因爲那樣我就不得不手動將它與垃圾收集索引一起手動收集。但也許這是最好的折衷...

有沒有我不知道的標準做法?

回答

1

如何使用別名?而不是直接查詢索引,您的應用程序可以查詢別名(例如live)。只要您的索引尚未準備好(即仍在填充),則不會爲其分配live別名,因此索引將不可搜索。

基本上,過程是這樣的:

  1. 創建它的設置和映射的索引
  2. 填充它
  3. 完成後,assign the live alias它併發送你的查詢反對
  4. 後來當您需要索引新數據時,您將創建另一個索引
  5. 您可以填充該新索引
  6. Whe ñ這樣做,你switch the aliases,即從以前的搜索索引中刪除live別名和live別名分配給新的搜索索引

這裏是a simple example演示這一點。

+0

我相信這是一個很好的解決方案。謝謝! – ubershmekel

+0

很高興能幫到你! – Val

相關問題