elasticsearch,Jakarta Ee,elasticsearch" /> elasticsearch,Jakarta Ee,elasticsearch" />

Jakarta ee 如何存储、版本和部署弹性搜索河插件设置?

Jakarta ee 如何存储、版本和部署弹性搜索河插件设置?,jakarta-ee,elasticsearch,Jakarta Ee,elasticsearch,我正在一个JavaEE项目中部署ES,并尝试提供设置整个应用程序所需的配置,包括war文件中的ES和ES插件配置。目前,我正在整合。有很多关于如何通过ES REST API配置插件的文档,它工作得很好,但是我没有找到关于如何将配置捆绑到设置文件中的信息,我可以提供给ES来设置河流 如何创建一个独立的ES版本控制包? 对于核心设置,是否有类似于elasticsearch.yml的ES方法,或者我是否需要手动/以编程方式更新ES设置 注意:war嵌入式ES配置是一项要求,但请随时回答如何将其存档为独

我正在一个JavaEE项目中部署ES,并尝试提供设置整个应用程序所需的配置,包括war文件中的ES和ES插件配置。目前,我正在整合。有很多关于如何通过ES REST API配置插件的文档,它工作得很好,但是我没有找到关于如何将配置捆绑到设置文件中的信息,我可以提供给ES来设置河流

如何创建一个独立的ES版本控制包? 对于核心设置,是否有类似于elasticsearch.yml的ES方法,或者我是否需要手动/以编程方式更新ES设置


注意:war嵌入式ES配置是一项要求,但请随时回答如何将其存档为独立ES配置。

记录:我最后编写了一个配置ES的ElasticSearchStarter:

package com.abc.xyz.resources.search;
导入java.io.IOException;
导入java.io.InputStream;
导入javax.annotation.PostConstruct;
导入javax.annotation.PreDestroy;
导入javax.annotation.Resource;
导入javax.ejb.Singleton;
导入javax.ejb.Startup;
导入javax.enterprise.inject.products;
导入javax.inject.inject;
导入org.elasticsearch.client.client;
导入org.elasticsearch.common.settings.ImmutableSettings;
导入org.elasticsearch.node.node;
导入org.elasticsearch.node.NodeBuilder;
导入org.slf4j.Logger;
@独生子女
@启动
公共类弹性起动器{
私有静态最终字符串TRANSPORT\u TCP\u PORT=“TRANSPORT.TCP.PORT”;
私有静态最终字符串TAGLINE=“TAGLINE”;
私有静态最终字符串发现\u ZEN\u PING\u MULTICAST\u ENABLED=“DISCOVERY.ZEN.PING.MULTICAST.ENABLED”;
公共静态最终字符串索引=“abc”;
@注入
记录器;
//es设置
私有静态最终字符串HTTP\u ENABLED=“HTTP.ENABLED”;
私有静态最终字符串路径\u DATA=“PATH.DATA”;
私有静态最终字符串路径\u WORK=“PATH.WORK”;
私有静态最终字符串路径\u LOGS=“PATH.LOGS”;
私有静态最终字符串路径\u UNICAST\u HOSTS=“discovery.zen.ping.UNICAST.HOSTS”;
@资源(lookup=“java:global/xyz/ELASTIC\u SEARCH\u PATH\u DATA”)
私有字符串路径数据;
@资源(lookup=“java:global/xyz/ELASTIC\u SEARCH\u PATH\u WORK”)
私人串路;
@资源(lookup=“java:global/xyz/ELASTIC\u SEARCH\u PATH\u LOGS”)
私有字符串路径日志;
@资源(lookup=“java:global/xyz/ELASTIC\u SEARCH\u TRANSPORT\u TCP\u PORT”)
私有字符串传输端口;
@资源(lookup=“java:global/xyz/ELASTIC\u SEARCH\u UNICAST\u HOSTS”)
私有字符串单播主机;
受保护节点;
@施工后
void init()引发ElasticSearchStartUpException{
ImmutableSettings.Builder settings=buildSettings();
node=NodeBuilder.NodeBuilder().settings(settings).node();
getNode().start();
}
private ImmutableSettings.Builder buildSettings()引发ElasticSearchStartUpException{
//ES设置
ImmutableSettings.Builder设置=ImmutableSettings.settingsBuilder();
InputStream resourceAsStream=getClass().getResourceAsStream(“elasticsearch.yml”);
如果(resourceAsStream!=null){
settings.loadFromStream(“elasticsearch.yml”,resourceAsStream);
logger.info(“从elasticsearch.yml加载的设置”);
试一试{
resourceAsStream.close();
}捕获(IOE异常){
String msg=“加载从elasticsearch.yml加载的设置时出错”;
记录器错误(msg+e);
抛出新的ElasticSearchStartUpException(msg,e);
}
}否则{
String msg=“加载elasticsearch.yml失败!resourceAsStream为空”;
记录器错误(msg);
抛出新的ElasticSearchStartUpException(msg);
}
//另请参见elasticsearch.yml
设置。放置(标语“你什么都不知道……问我!”);
settings.put(启用HTTP_,false);
设置.put(路径\数据,路径数据);
设置.放置(路径工作,路径工作);
设置.put(路径日志、路径日志);
设置.put(传输\ TCP\端口,传输支持端口);
settings.put(发现\u ZEN\u PING\u多播\u启用,false);
int i=0;
对于(字符串UnicasHost:UnicasHosts.split(“,”)){
settings.put(PATH_UNICAST_HOSTS+“+i,unicashost.trim());
i++;
}
返回设置;
}
@发情前期
无效杀死(){
//停止并关闭节点
如果(!getNode().isClosed()){
getNode().close();
}
}
公共节点getNode(){
返回节点;
}
@产生
公共客户端getClient(){
返回node.client();
}
}
然后,我通过一个CDI事件对构建做出反应,并通过JavaAPI推送JDBCRiver设置,但最终将JDBCRiver一起转储,因为它将绕过JavaEE和应用服务器提供的所有功能。(例如,使用应用服务器定义的数据源)

编辑:可能有用

附言:更好的答案仍然受欢迎