### es使用总结:
1. 创建mapping
参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping.html
2. 创建链接
```
参考:
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/connecting.html
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.16/_other_authentication_methods.html
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("host", "port", "http"));
restClientBuilder.setDefaultHeaders(new BasicHeader[]{new BasicHeader("Authorization",
"ApiKey " + apiKeyAuth)});
restClientBuilder.setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.setMaxConnTotal(100);
httpClientBuilder.setMaxConnPerRoute(100);
return httpClientBuilder;
});
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
```
3. 判断索引是否存在
```
GetIndexRequest getIndexRequest = new GetIndexRequest("索引名");
try {
return restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
```
4. 创建索引
```
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/api-conventions.html
ElasticsearchClient client = ...
CreateIndexResponse createResponse = client.indices().create(
new CreateIndexRequest.Builder()
.index("my-index")
.aliases("foo",
new Alias.Builder().isWriteIndex(true).build()
)
.build()
);
```
5. 删除索引
```
https://artifacts.elastic.co/javadoc/co/elastic/clients/elasticsearch-java/7.16.3/co/elastic/clients/elasticsearch/indices/DeleteIndexRequest.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.10/indices-delete-index.html
DeleteIndexRequest request = new DeleteIndexRequest(indexName);
AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
```
6. 索引数据
```
EsWriteResponse result = EsWriteResponse.builder().code(EsWriteResponse.SUCCESS).build();
IndexRequest request = new IndexRequest(indexName, "doc", id);
request.source(json, XContentType.JSON);
IndexResponse indexResponse = null;
try {
indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
handleResponse(indexResponse);
} catch (IOException e) {
result.setCode(EsWriteResponse.ES_FAIL);
e.printStackTrace();
}
log.info("indexData:{}, response:{}", json, indexResponse);
return result;
private void handleResponse(DocWriteResponse response) {
if (response == null || response.getShardInfo().getTotal() == response.getShardInfo().getSuccessful()) {
return;
}
if (response.getShardInfo().getFailed() > 0) {
for (ReplicationResponse.ShardInfo.Failure failure : response.getShardInfo().getFailures()) {
log.warn("document fail reason:{}", failure.reason());
}
}
}
```
7. 删除数据
```
https://artifacts.elastic.co/javadoc/co/elastic/clients/elasticsearch-java/7.16.3/co/elastic/clients/elasticsearch/core/package-summary.html
EsWriteResponse result = EsWriteResponse.builder().code(EsWriteResponse.SUCCESS).build();
DeleteRequest request = new DeleteRequest(indexName, "doc", id);
request.timeout(TimeValue.timeValueMillis(800));
DeleteResponse response;
try {
response = SearchClient.getInstance().getRestHighLevelClient().delete(request, RequestOptions.DEFAULT);
log.info("deleteData,id:{}, response:{}", id, response);
} catch (IOException e) {
result.setCode(EsWriteResponse.ES_FAIL);
e.printStackTrace();
}
return result;
```
8. 查询数据
```
GetRequest request = new GetRequest(indexName, "doc", id);
//可选参数设置
request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);
String[] includes = new String[]{"*"};
String[] excludes = Strings.EMPTY_ARRAY;
FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
request.fetchSourceContext(fetchSourceContext);
//同步执行
GetResponse getResponse = restHighLevelClient.get(request, RequestOptions.DEFAULT);
String s = getResponse.getSourceAsString();
log.info("getData,id:{}, data:{}", id, s);
```