技术交流28群

服务热线

135-6963-3175

微信服务号

Elasticsearch之Java-client 更新时间 2020-3-13 浏览1424次

构建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();