ElasticsearchをSpringBootWebアプリケーションに統合することを楽しみにしています。トランスポートクライアントを作成する構成は次のとおりです。
@Configuration
public class ElasticsearchConfig {
private TransportClient client;
@Bean
public TransportClient client() throws UnknownHostException{
Settings settings = Settings.builder()
.put("client.transport.nodes_sampler_interval", "5s")
.put("client.transport.sniff", false)
.put("transport.tcp.compress", true)
.put("cluster.name", "clusterName")
.put("xpack.security.transport.ssl.enabled", true)
.build();
client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
return client;
}
プロジェクトを開始すると、次のエラーが発生し、理由がわかりません。
Java.lang.ClassNotFoundException: org.elasticsearch.plugins.NetworkPlugin
依存関係を追加するのを忘れましたか?
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
</dependency>
あなたが私を助けることができることを願っています
私はちょうど同じ問題に出くわしました。 Elasticsearchのドキュメントが完全ではないようです。トランスポートクライアントの依存関係に加えて、elasticsearchの依存関係も追加する必要があります。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.1</version>
</dependency>
Log4jの依存関係も必要ですが、それは Elasticsearch docs に明確に記載されています。
Elasticsearch Githubページの この問題 で述べられているように、SpringBootスターターはいくつかのデフォルトの依存関係を管理します。これは5.1.1未満のElasticSearchのデフォルトバージョンを定義しているため、そのようなクラスはありません。
独自のpomでプロパティを明示的に定義して、その定義を上書きできます。
<properties>
<elasticsearch.version>5.1.1</elasticsearch.version>
</properties>
それが役に立てば幸い。
私にとっては、ElasticSearchの依存関係のバージョンがpomに間違っているようです
<properties>
<log4j.version>2.6.2</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId></exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j.version}</version>
</dependency>
バージョンを5.1.1に置き換えてみてください。log4jも必要なようです。
よろしく、noirabys