2016-12-23 6 views
4

は、私はテストのために埋め込まれたノードを起動するには、次のコードを使用:elasticsearch 5.1を起動するにはどうすればよいですか? elasticsearch 2.xでは

@Bean 
public Node elasticSearchTestNode() { 
    return NodeBuilder.nodeBuilder() 
      .settings(Settings.settingsBuilder() 
        .put("http.enabled", "true") 
        .put("path.home", "elasticsearch-data") 
        .build()) 
      .node(); 
} 

これは、任意のより多くをコンパイルしません。 5.xで組み込みノードを起動するにはどうすればよいですか?

+1

は何のコンパイルエラー「これはもはやコンパイルされません。」あなたは入手できますか? – Val

答えて

9

埋め込みelasticsearchは公式にはサポートされていません。2.xよりも少し複雑ですが、動作します。あなたは、いくつかの依存関係を追加する必要が

:その後、

<dependency> 
     <groupId>org.elasticsearch</groupId> 
     <artifactId>elasticsearch</artifactId> 
     <version>5.1.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency><!-- required by elasticsearch --> 
     <groupId>org.elasticsearch.plugin</groupId> 
     <artifactId>transport-netty4-client</artifactId> 
     <version>5.1.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency><!-- required by elasticsearch --> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>2.7</version> 
    </dependency> 

そして、このようにノードを起動します。

@Bean 
public Node elasticSearchTestNode() throws NodeValidationException { 
    Node node = new MyNode(
      Settings.builder() 
        .put("transport.type", "netty4") 
        .put("http.type", "netty4") 
        .put("http.enabled", "true") 
        .put("path.home", "elasticsearch-data") 
        .build(), 
      asList(Netty4Plugin.class)); 
    node.start(); 
    return node; 
} 

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

これは少し助けになりました。 java.lang.IllegalStateException:ノードロックの取得に失敗しました。ロックID [0]で[[target/elasticsearch]]を試しました。おそらくこれらの場所は書き込み可能ではないか、[node.max_local_storage_nodes](was [1])を増やさずに複数のノードが起動されていた可能性があります。 – longliveenduro

+0

何らかの理由でデータフォルダーを削除しようとしました –

+0

私は、 '原因:java.lang.IllegalStateException:ビルドshortHashを見つけることができませんでした。 Elasticsearchを今すぐ停止させるので、微妙に壊れた方法で実行されることはありません。これはおそらくビルドバグです。私はバージョン '5.2.2'を使用しています。 –

1

サポートされていません。

this blog postをお読みください。

EDIT:

これは私がintegration tests with maven問題を解決する方法です。

+0

OK、それは確かに生産にelasticsearchを埋め込むための良い考えではありませんが、私はまだテストのためにそれが必要です。 –

+0

私の回答はhttp://david.pilato.fr/blog/2016/10/18/elasticsearch-real-integration-tests-updated-for-ga/ – dadoonet

+1

で更新されました。リンクから関連する部分を埋め込むことを検討することもできますあなたの答えに含まれています。リンクが行き来していて、あなたが何時間も抱えていた質問への答えを見つけただけで、そのリンクが壊れていることを発見するよりも、もっとイライラするものはあまりありません:) https://meta.stackexchange.com/question/8231/are-answers-that-just-contain-links-other-really-good-answers – jannis

関連する問題