Raj*_*hna 4 rest elasticsearch
我知道不建议使用嵌入式Elasticsearch.我只是为了测试目的而尝试它.
我正在尝试启动一个嵌入式Elasticsearch节点,该节点提供以下elasticsearch.yml的配置
# Name for the cluster
cluster.name: elasticsearch
# Name for the embedded node
node.name: EmbeddedESNode
# Path to log files:
path.logs: logs
discovery.zen.ping.unicast.hosts: []
# Disable dynamic scripting
script.inline: false
script.stored: false
script.file: false
transport.type: local
http.type: netty3
Run Code Online (Sandbox Code Playgroud)
我正在使用es 5.1.1并且我的代码启动嵌入式节点如下.
try {
Settings elasticsearchSetting = Settings.builder()
// Value for path.home is required for es but will not be used as long as other properties
// path.logs, path.data and path.conf is set.
.put(ES_PROPERTY_PATH_HOME, "nullpath")
.put(ES_PROPERTY_PATH_CONF, confDir)
.build();
Node node = new Node(elasticsearchSetting).start();
logger.info("Embedded Elasticsearch server successfully started ...");
} catch (Exception e) {
throw e;
}
Run Code Online (Sandbox Code Playgroud)
我得到以下痕迹.
java.lang.IllegalStateException: Unsupported http.type [netty3]
at org.elasticsearch.common.network.NetworkModule.getHttpServerTransportSupplier(NetworkModule.java:194) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.node.Node.<init>(Node.java:396) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.node.Node.<init>(Node.java:229) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.node.Node.<init>(Node.java:225) ~[elasticsearch-5.1.1.jar:5.1.1]
... 18 more
Run Code Online (Sandbox Code Playgroud)
我也试过http.type: netty4
但到目前为止没有运气.它在http.enabled:false
设置时有效,但我想使用http rest api进行测试.
PS:我一直在使用这个 elasticsearch hadoop类来实现嵌入式es,不幸的是我找不到任何文档http.type
.
我不能在ES 5.x中启动带有http的嵌入式节点吗? 我在这做错了什么?
任何帮助都非常感谢.
正如@Bastian所提到的,问题是传输模块不在类路径中.解决方案已经存在于es-hadoop嵌入式es实现中.
private static class PluginConfigurableNode extends Node {
public PluginConfigurableNode(Settings settings, Collection<Class<? extends Plugin>> classpathPlugins) {
super(InternalSettingsPreparer.prepareEnvironment(settings, null), classpathPlugins);
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以将netty3作为插件提供如下.一切顺利.
Collection plugins = Arrays.asList(Netty3Plugin.class);
Node node = new PluginConfigurableNode(elasticsearchSetting, plugins).start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2549 次 |
最近记录: |