2016-09-17 124 views
2

我的Ruby/Sinatra應用程序使用elasticsearch-ruby gem連接到AWS ES羣集以索引經過授權的文本文檔(通過使用其用戶標識進行索引),用戶可以搜索。現在,我想將文檔從一個索引複製到另一個索引,以便由不同的授權用戶查詢文檔。我試過_reindex端點記錄on this file只得到了以下錯誤:如何重新索引AWS Elasticsearch?

Elasticsearch::Transport::Transport::Errors::Unauthorized - [401] {"Message":"Your request: '/_reindex' is not allowed."}:

周圍的Googling,我,列出了兩個他們的API的所有支持的操作亞馬遜的文檔頁面迷迷糊糊的,而對於一些扭曲的原因_reindex ISN」還沒有。這是爲什麼?更重要的是, 我如何有效地解決這個問題並實現我想要做的事情?

回答

1

您應該仔細檢查由AWS ES部署的Elasticsearch版本。我相信_reindex API可用於version 2.2。您可以通過獲取捲曲的ES端口ip &端口來檢查版本號。並檢查version.number。

要解決沒有_reindex端點,我建議你自己實現它。這不是太糟糕。你可以通過use a scroll遍歷你想要重新索引的所有文檔。如果它是整個索引,則可以使用滾動來使用一個基本查詢。然後,您可以隨意操作文檔,或者只需使用the bulk api即可將文檔發佈(即重新索引)到新索引。

確保已經使用您想提前創建的映射模板創建新索引。

上面的這個過程最適合重新索引大量文檔;如果你只是想移動幾個或一個(這聽起來像你一樣)。從現有的索引中,通過id和submit it獲取文檔到第二個索引。