我想存儲一些簡單的狀態(鍵值對),通過ElasticSearch集羣共享一個插件。 (NB - 插件不只是車輛/方法來存儲狀態,我想在插件使用這種狀態)我試着通過集羣更新設置API這樣做,任何方式來訪問ElasticSearch插件中的瞬態集羣設置/狀態?
Settings newSettings = ImmutableSettings.settingsBuilder()
.put(MY_SETTING, MY_VALUE).build();
client.admin().cluster().prepareUpdateSettings()
.setTransientSettings(newSettings).execute().actionGet();
但,不幸的是,這將無法正常工作,因爲MY_SETTING
未在IndexDynamicSettingsModule
中註冊。我無法弄清楚如何掛鉤到該模塊(可能是其addDynamicSetting
方法)。 有沒有辦法將自定義鍵值存儲在瞬態集羣設置? (c.f. HTTP API)。
至於替代方案,似乎節點狀態API可以返回自定義值,但這些是更多的事情,一個人會計算並返回一個插件,而不是那些可以存儲爲狀態的東西。將值存儲在靜態變量中,並通過廣播操作在整個羣集中分配這些值是一種選擇,但如果它存在,我更喜歡簡單的東西。
任何解決方案都需要對ElasticSearch版本升級合理穩健。
在此先感謝!
您是否有任何自定義數據工廠用法的示例?我一定是做錯了;我通過'ClusterState.registerFactory'添加了一個自定義工廠,但它的任何方法('readFrom' /'writeTo' /'toXContent')似乎都沒有被調用。謝謝! – gatoatigrado 2013-04-05 18:44:44
看看IndexWarmersMetaData。 – imotov 2013-04-05 20:54:00
非常感謝。然而,最終,我發現使用Elasticsearch Zookeeper插件更簡單,更不容易出錯,並將需要的狀態值存儲在Zookeeper中。 (這可以從外部工具看到它們的附加好處。)如果看起來有用,我可能會發布解決方案。 – gatoatigrado 2013-04-09 22:42:13