2016-12-21 13 views
2

埋め込み型のElasticsearchはお勧めしません。私はテスト目的で試しています。 サポートされていないhttp.type [netty3]埋め込みelasticsearchノードを起動しようとしています

は、私は次のようである埋め込まれたノードを開始するために、ES 5.1.1と私のコードを使用しています以下のelasticsearch.ymlから設定を与える埋め込まElasticsearchノード

# 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 

を開始しようとしています。

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; 
    } 

次のようなトレースがあります。

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 

私もhttp.type: netty4で試してみたが、運これまでのところ。 http.enabled:falseが設定されているときに動作しますが、テスト用にhttp rest apiを使用します。

P.S: 私が埋め込まれたESを実装するには、参照用this elasticsearchのHadoopのクラスを使用してきたと、残念ながら私はhttp.type上の任意のドキュメントを見つけることができませんでした。

ES5.xでhttpでエンベデッドノードを開始できませんか? ここで何が間違っていますか?

ご協力いただきまして誠にありがとうございます。あなたのクラスパスにモジュール輸送-netty4を追加する必要が

答えて

3

@Bastian問題で述べたように、トランスポートモジュールがクラスパスにされていないということでした。 es-hadoop組み込みes実装では、解決策はすでにthereでした。

private static class PluginConfigurableNode extends Node { 
     public PluginConfigurableNode(Settings settings, Collection<Class<? extends Plugin>> classpathPlugins) { 
      super(InternalSettingsPreparer.prepareEnvironment(settings, null), classpathPlugins); 
     } 
} 

次のようにnetty3をプラグインとして追加できます。それからすべてがうまくいく。

Collection plugins = Arrays.asList(Netty3Plugin.class); 
Node node = new PluginConfigurableNode(elasticsearchSetting, plugins).start(); 
1

<dependency> 
     <groupId>org.elasticsearch.plugin</groupId> 
     <artifactId>transport-netty4-client</artifactId> 
     <version>5.1.1</version> 
     <scope>test</scope> 
</dependency> 

も参照してくださいmy answer here

+0

私は自分のクラスパスにそのライブラリを持っています。 :-(ありがとうと思います。 –

+1

クラスパスに少なくとも1つのトランスポートモジュールが必要です。それ以外の場合は、httpトランスポートを使用できません。 –

+0

私は早くそれを見落としました。 –

関連する問題