我正在尝试使用elasticsearch插件创建,我正在尝试在插件启动时创建索引(如果缺少)。
我想问一下,为代码创建添加代码段的最佳位置是什么?我已将其添加到客户端作为构造函数参数的注入绑定,但我收到以下错误:
没有已知主节点,安排重试[2015-05-26 12:03:27,289] [ERROR] [bootstrap] {1.4.1}: 初始化失败... 1)UncategorizedExecutionException [失败 执行] ExecutionException当[显示java.lang.NullPointerException] 的NullPointerException
我的猜测是客户端尚未准备好处理索引创建请求,我的代码片段如下:
公共类IndexCreator {
private final String indexName; private final ESLogger LOG; @Inject public IndexCreator(Settings settings, Client client) { this.LOG = Loggers.getLogger(getClass(), settings); this.indexName = settings.get("metis.index.name", ".metis"); String indexName = ".metis-registry"; IndicesExistsResponse resp = client.admin().indices().prepareExists(indexName).get(); if (!resp.isExists()) { client.admin().indices().prepareCreate(indexName).get(); } } }
我将其添加为绑定到我的模块
公共类MyModule扩展了AbstractModule {
private final Settings settings; public MyModule(Settings settings) { this.settings = Preconditions.checkNotNull(settings); } @Override protected void configure() { bind(IndexCreator.class).asEagerSingleton(); } }
但它会产生过多提及的错误,任何想法?群组here
上的相关帖子