1.maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
springboot的版本和自己的es版本相对应
2.设置Config
/**
* ElasticSearch 客户端配置
*/
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("localhost:9200")
.build();
return RestClients.create(clientConfiguration).rest();
}
}
报错可能是因为地址还有配置不对(之前配置明明配了还是报错,随后发现是nacos对应的配置是另外一个em)以及版本,比如公司的版本是5.x的配置文件就不长这样
*ElasticsearchRestTemplate,也就是rest模式的,端口的用9200
yml中进行配置:
server:
port: 10068
spring:
application:
name: search
data:
elasticsearch:
cluster-name: my-application (可以去9200地方看名字)
cluster-nodes: 192.168.10.12:9300 #es安装的节点
3.文档
Spring Data Elasticsearch – Reference Documentation
4.常见错误
1)None of the configured nodes are available
-确认节点名字和ip以及端口地址
-如果发现改了es名字之后,启动后对应的名字没改,可能是之前装过没有彻底卸载干净,卸载干净,再启动
-也有可能端口 ip 没映射好的原因
-ES7版本后不支持TransportClient方式连接
排查方法:
1.telnet ip 9300发现网络不通
设置yml
network.address: 0.0.0.0
2.内存不足
sudo sysctl -w vm.max_map_count=xxxx
3.关闭嗅探
config增加
Settings esSettings = Settings.builder()
.put("cluster.name", esClusterName)
.put("client.transport.sniff", false).build();
2)java.lang.IllegalStateException:… unsupported version: [5.0.0] minimal version is: [6.8.0]
springboot和es 版本不适配 两个相互匹配即可
-SpringBoot是2.2.0.RELEASE才兼容elasticsearch 7.x