gpt4 book ai didi

plugins - 有什么方法可以访问 ElasticSearch 插件中的 transient 集群设置/状态?

转载 作者:行者123 更新时间:2023-12-02 23:05:37 27 4
gpt4 key购买 nike

我想为插件存储一些在 ElasticSearch 集群中共享的简单状态(键值对)。 (注意——插件不仅仅是一种存储状态的工具/方法,我想在插件中使用这种状态。)我尝试通过集群更新设置 API 执行此操作,

Settings newSettings = ImmutableSettings.settingsBuilder()
.put(MY_SETTING, MY_VALUE).build();
client.admin().cluster().prepareUpdateSettings()
.setTransientSettings(newSettings).execute().actionGet();

但不幸的是,这行不通,因为 MY_SETTING未在 IndexDynamicSettingsModule 中注册.我不知道如何连接到那个模块(可能是它的 addDynamicSetting 方法)。 有没有办法在临时集群设置中存储自定义键值 ? (参见 HTTP API)。

至于 替代品 ,似乎节点状态 API 可以返回自定义值,但这些更多的是人们可以通过插件计算和返回的东西,而不是可以存储为状态的东西。将值存储在静态变量中,并通过广播操作将这些值分布在整个集群中是一种选择,但如果它存在的话,我更喜欢简单的东西。

任何解决方案都需要对 ElasticSearch 版本升级相当稳健。

提前致谢!

最佳答案

动态设置的注册方式在 0.90 中进行了更改。因此,没有任何解决方案可以同时兼容 0.20.x 和 0.90.x 版本。对于 0.90.x 版本,您可以使用 addDynamicSettings 注册动态设置方法:

public class MyPlugin extends AbstractPlugin {

/* ... */

public void onModule(IndexDynamicSettingsModule indexDynamicSettingsModule) {
indexDynamicSettingsModule.addDynamicSettings("index.my.setting");
}
}

至于替代方案,您可以通过实现和注册自己的 custom data factory 来将数据添加到状态中。 .然后,您可以在主节点上更新集群状态并在所有节点上监听插件中的集群状态变化。

关于plugins - 有什么方法可以访问 ElasticSearch 插件中的 transient 集群设置/状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com