我是ElasticSearch的新手...
非常喜欢API(特别是ElasticsearchTemplate&支持单元测试)...
使用ElasticSearch 5.5.0(以下链接内联了完整的代码,也可以作为可下载的zip文件提供)执行此示例:
https://www.mkyong.com/spring-boot/spring-boot--data-elasticsearch-example/
maven依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
ESConfig:
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.mkyong.book.repository")
public class EsConfig {
@Value("${elasticsearch.host}")
private String EsHost;
@Value("${elasticsearch.port}")
private int EsPort;
@Value("${elasticsearch.clustername}")
private String EsClusterName;
@Bean
public Client client() throws Exception {
Settings esSettings = Settings.settingsBuilder()
.put("cluster.name", EsClusterName)
.build();
//https://www.elastic.co/guide/en/elasticsearch/guide/current/_transport_client_versus_node_client.html
return TransportClient.builder()
.settings(esSettings)
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName(EsHost), EsPort));
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
}
SRC/主/资源:
elasticsearch.clustername = mkyong-cluster
elasticsearch.host = localhost
elasticsearch.port = 9300
发出以下命令时,请选择:
mvn spring-boot:run
或
mvn clean test
标准输出:
Caused by: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{127.0.0.1:9300}]]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:326)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:223)
at org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:55)
此外,在我的ElasticSearch 5.5.0引擎的stdout中获得以下内容:
[2017-07-23T02:48:46,135][WARN ][o.e.t.n.Netty4Transport ] [vY7jxpr] exception caught on transport layer [[id: 0xa7e950be, L:/127.0.0.1:9300 - R:/127.0.0.1:60190]], closing connection
java.lang.IllegalStateException: Received message from unsupported version: [1.0.0] minimal compatible version is: [5.0.0]
at org.elasticsearch.transport.TcpTransport.messageReceived(TcpTransport.java:1379) ~[elasticsearch-5.5.0.jar:5.5.0]
at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.channelRead(Netty4MessageChannelHandler.java:74) ~[transport-netty4-5.5.0.jar:5.5.0]
有没有办法用spring数据ElasticSearch搭配ElasticSearch 5.5.0引擎?
如果是,将如何实现连接?
我正在使用弹性搜索提供的弹性搜索Java客户端,并且能够在弹性搜索5.5.0上连接和创建索引,但我真的希望我能使用这个库的能力。
spring boot 1.5.1不支持ElasticSearch 5.x(您提供的文章也说了)。为了能够使用ElasticSearch5.x,您需要使用spring boot 2的一个里程碑。
尝试使用以下依赖项配置项目:
# spring boot
compile 'org.springframework.boot:spring-boot:2.0.0.M2'
# elasticsearch
compile 'org.elasticsearch:elasticsearch:5.5.0'
compile 'org.elasticsearch.client:transport:5.5.0'
# spring-data-elasticsearch for spring boot
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:2.0.0.M2'
这应该允许您使用所有的好东西的弹性搜索Java API和spring-数据-Elasticsearch。
更新:基本Gradle(V4.0.1)配置如下所示(build.Gradle文件):
buildscript {
ext {
springBootVersion = '2.0.0.M2'
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/libs-snapshot' }
maven { url 'http://repo.spring.io/milestone/' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
jar {
baseName = 'elastic'
version = '0.0.1'
}
repositories {
mavenCentral()
jcenter()
maven { url 'https://repo.spring.io/libs-snapshot' }
maven { url 'http://repo.spring.io/milestone/' }
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-logging'
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
compile 'org.elasticsearch:elasticsearch:5.4.1'
compile 'org.elasticsearch.client:transport:5.4.1'
compile 'com.google.guava:guava:20.0'
testCompile 'junit:junit:4.12'
}
我的Elasticsearch docker撰写文件就是这样 我有一个spring启动应用程序,application.properties是 然而,我得到了错误 问题:1)如何从外部连接到带Spring靴的elasticsearch?2) 如果docker将elastic和springboot应用程序组合在一起,它们将位于同一个网络上。要连接到弹性搜索,我应该对spring.data.elast
我是ElasticSearch的新手,我遵循这里的说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html 每当我运行“docker compose up”时,Kibana总是说“无法恢复连接”,但如果我运行curlhttp://localhost:9200,我会得到回复: 下面是我的docker
我在docker中运行了elasticsearch 8.1,其中包含以下docker compose文件: 我正在尝试使用org.elasticsearch.client.RestClient向es集群发出一个简单的GET请求。 请求: Rest客户端初始化: 主要方法: buildClusterHosts()方法正确地构建了一个HttpHost数组(在本例中只有一个),并将其提供给rest客户端
我正在使用Spring boot和AWS elasticsearch服务。AWS Elasticsearch服务,仅提供REST接口。 Elasticsearch Rest客户端在这里。 简单地说,是否可以将REST客户端与Spring Data Elasticsearch一起使用? 换句话说,Spring Data Elasticsearch是否与Elasticsearch Rest客户端配合使
我试图在Spring MVC应用程序中配置ElasticSearch存储库。我使用Spring Data ElasticSearch版本:2.0.7和ElasticSearch Server 2.4.4。 我确信ElasticNode可以工作,下面是示例输出 这是我的测试配置 我得到的错误,应用程序无法连接到弹性节点,堆栈跟踪 我试图从1.7.1, 2.4.4和5.2.1更改弹性搜索节点的版本。没
我试着用docker compose在Centos 8上运行ELK: 这是我的 但我面临着这个错误: {“类型”:“日志”,“时间戳”:“2020-03-03T22:53:19Z”,“标签”:[“警告”,“弹性搜索”,“管理],“pid”:1,“消息”:“无法恢复连接:http://elasticsearch:9200/"} 当我检查时: > elasticsearch运行良好。 工作正常。 ki