es使用总结

### 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);

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值