包引入
//gradle
implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.8.10'
implementation 'org.elasticsearch:elasticsearch:6.8.10
<!-- maven -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.8.10</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.8.10</version>
</dependency>
注:大版本须和elasticsearch的版本一致,小版本可大于等于elasticsearch的版本
Client初始化
/**
*es配置相关参数
**/
@Data
@ConfigurationProperties(prefix = ElasticSearchProperties.PREFIX)
@Configuration
public class ElasticSearchProperties {
public static final String PREFIX = "spring.elasticsearch";
/**
* ES集群结点
*/
private String[] clusterNodes;
/**
* x-pack 认证用户名
*/
private String username;
/**
* x-pack 认证密码
*/
private String password;
/**
* 连接超时时间,默认1000毫秒
*/
private int connectTimeout = 1000;
/**
* Socket超时时间,默认3000毫秒
*/
private int socketTimeout = 3000;
}
/**
*Client初始化
**/
@Slf4j
@Configuration
@EnableConfigurationProperties(ElasticSearchProperties.class)
public class ElasticSearchConfig {
private final ElasticSearchProperties elasticSearchProperties;
public ElasticSearchConfig(ElasticSearchProperties elasticSearchProperties) {
this.elasticSearchProperties = elasticSearchProperties;
}
@Bean
public RestHighLevelClient buildClient() {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
String username = elasticSearchProperties.getUsername();
String password = elasticSearchProperties.getPassword();
final String[] clusterNodes = elasticSearchProperties.getClusterNodes();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password));
HttpHost[] hosts = new HttpHost[clusterNodes.length];
for (int i = 0; i < clusterNodes.length; i++) {
hosts[i] = new HttpHost(clusterNodes[i], 9200, "http");
}
RestClientBuilder builder = RestClient.builder(hosts)
.setHttpClientConfigCallback(
httpClientBuilder -> httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider))
.setRequestConfigCallback(
requestConfigBuilder -> requestConfigBuilder
.setConnectTimeout(elasticSearchProperties.getConnectTimeout())
.setSocketTimeout(elasticSearchProperties.getSocketTimeout())
);
RestHighLevelClient restHighLevelClient = new MyRestHighLevelClient( builder);
return restHighLevelClient;
}
}
/**
*自定义客户端,添加关闭应用时同时关闭客户端
**/
public class MyRestHighLevelClient extends RestHighLevelClient implements DisposableBean {
public MyRestHighLevelClient(RestClientBuilder restClientBuilder) {
super(restClientBuilder);
}
@Override
public void destroy() throws Exception {
super.close();
}
}
创建索引
CreateIndexRequest request = new CreateIndexRequest("test");
Map<String, Object> message = new HashMap<>();
message.put("type", "text");
Map<String, Object> properties = new HashMap<>();
properties.put("message", message);
Map<String, Object> mapping = new HashMap<>();
mapping.put("properties", properties);
//此处也可以使用String或XContentBuilder
request.mapping(mapping);
CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
查询(待添加)