服务热线
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();