服务热线
135-6963-3175
构建httpHost
HttpHost[] httpHosts = new HttpHost[esUris.length]; httpHosts[0] = new HttpHost(ip, 9200, "http");
带密码认证的client:
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
// es账号密码
credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("es", "123456"));
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(httpHosts).setHttpClientConfigCallback((httpClientBuilder) -> {
// 这里可以设置一些参数,比如cookie存储、代理等等
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}));不带密码的client
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(httpHosts));
查询
构建query
MultiMatchQueryBuilder matchbuilder = QueryBuilders.multiMatchQuery(queryField.getFieldValue(), queryField.getFieldName()); // 不对查询词进行拆分 matchbuilder.operator(Operator.AND); sourceBuilder.query(matchbuilder); //查所有 QueryBuilder matchbuilder1 = QueryBuilders.matchAllQuery(); sourceBuilder.query(matchbuilder1); //bool类型 BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); boolQuery.must(QueryBuilders.termQuery(fieldName, queryField.getFieldValue()));
//构建source
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.from(pageNo - 1); sourceBuilder.size(pageSize); sourceBuilder.query(query);
//构建请求
SearchRequest searchRequest = new SearchRequest(); searchRequest.indices(indexName); searchRequest.source(sourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
新增索引
IndexRequest indexRequest = new IndexRequest(indexName, indexType,keyIdValue);
indexRequest.source(JSON.toJSONString(model), XContentType.JSON);
IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
if (indexResponse.status() == RestStatus.OK) {
LOGGER.info("删除成功!id: {}", indexResponse);
}更新索引
UpdateRequest request = new UpdateRequest(indexName, indexType, keyIdValue);
request.doc(JSON.toJSONString(model), XContentType.JSON);
UpdateResponse updateResponse = restHighLevelClient.update(request, RequestOptions.DEFAULT);
if (updateResponse.status() == RestStatus.OK) {
LOGGER.info("删除成功!id: {}", updateResponse);
}删除索引
DeleteRequest request = new DeleteRequest(indexName, indexType, String.valueOf(id));
DeleteResponse deleteResponse = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
if (deleteResponse.status() == RestStatus.OK) {
LOGGER.info("删除成功!id: {}", id);
return true;
}根据id查询
GetRequest getRequest = new GetRequest(indexName, indexType, String.valueOf(id));
GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
if (getResponse.isExists()) {
String source = getResponse.getSourceAsString();
T bean = JSON.parseObject(source, clazz);
return bean;
}批量添加
BulkRequest bulkRequest = new BulkRequest();
list.forEach(bean -> {
String keyIdValue = ElasticsearchUtils.initPkValue(bean);
IndexRequest indexRequest = new IndexRequest(indexName, indexType, keyIdValue)
.source(JSON.toJSONString(bean), XContentType.JSON);
bulkRequest.add(indexRequest);
});
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);批量删除
BulkRequest bulkRequest = new BulkRequest();
ids.forEach(id -> {
DeleteRequest deleteRequest = new DeleteRequest(indexName, indexType, String.valueOf(id));
bulkRequest.add(deleteRequest);
});
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);创建索引
CreateIndexRequest request = new CreateIndexRequest(index);
CreateIndexResponse indexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
if (indexResponse.isAcknowledged()) {
LOGGER.info("创建索引成功");
} else {
LOGGER.info("创建索引失败");
}
return indexResponse.isAcknowledged();