1.打开config/elasticsearch.yml,添加以下内容,保存并重启elasticsearch
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
discovery.type: single-node
action.destructive_requires_name: true
2.执行 ./elasticsearch-setup-passwords interactive,指令交互过程中,会让设置4个用户的密码,设置完即可。
3. springboot配置application.yml,添加如下内容,保存
elasticsearch:
cluster-nodes: xx.xx.xx.xxx(服务器地址)
cluster-name: 对应你的cluster-name
cluster-password: elastic:elastic(es设置好的账号密码,格式账号:密码)
4. 添加maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.8.10</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>6.8.10</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.8.10</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>x-pack-transport</artifactId>
<version>6.8.11</version>
</dependency>
5. 增加ElasticsearchConfig类
@Slf4j
@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
@Data
public class ElasticsearchConfig {
private String clusterName;
private String clusterNodes;
private String clusterPassword;
@Bean
public Client client() throws Exception {
Settings esSettings = Settings.builder()
.put("cluster.name", clusterName)
.put("xpack.security.user", clusterPassword)
.put("xpack.security.transport.ssl.enabled", false)
//增加嗅探机制,找到ES集群,非集群置为false
.put("client.transport.sniff", false)
//增加线程池个数
.put("thread_pool.search.size", 20)
.build();
return new PreBuiltXPackTransportClient(esSettings).addTransportAddress(new TransportAddress(InetAddress.getByName(clusterNodes.substring(0, clusterNodes.indexOf(":"))), 9300));
}
@Bean(name = "elasticsearchTemplate")
public ElasticsearchOperations elasticsearchTemplateCustom() throws Exception {
ElasticsearchTemplate elasticsearchTemplate;
try {
elasticsearchTemplate = new ElasticsearchTemplate(client());
log.info("初始化ElasticsearchTemplate成功");
return elasticsearchTemplate;
} catch (Exception e) {
e.printStackTrace();
log.error("初始化ElasticsearchTemplate失败");
return new ElasticsearchTemplate(client());
}
}
}