- 创建RestHighLevelClient对象,通过Spring来管理restHighLevelClient对象
@Bean
public RestClientBuilder restClientBuilder() {
List<Map<String, Object>> addressList = new ArrayList<>();
map = new HashMap<>();
map.put("host", 172.0.0.1);
map.put("port", 9200);
list.add(map);//如果是集群则将集群所有ip和端口号分别装入list
HttpHost[] hosts = new HttpHost[addressList.size()];
if (CollectionUtils.isNotEmpty(addressList)) {
for (int i = 0; i < addressList.size(); i++) {
Map map = addressList.get(i);
hosts[i] = new HttpHost((String) map.get("host"), Integer.valueOf((String) map.get("port")), "http");
}
}
return RestClient.builder(hosts);
}
@Bean("restHighLevelClient")
public RestHighLevelClient highLevelClient(@Autowired RestClientBuilder restClientBuilder) {
return new RestHighLevelClient(restClientBuilder);
}
- 查询操作
设置index类型和type类型
SearchRequest searchRequest = new SearchRequest(“index”);
searchRequest.types("type");
QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds(id);
1.根据id进行查询
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(queryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = null;
String sourceAsString;
try {
searchResponse = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
2.条件查询
BoolQueryBuilder boolQueryBuilder = boolQuery();
boolQueryBuilder.must(QueryBuilders.matchQuery("查询的字段", "查询条件"));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse search;
try {
search = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
- 查询对象中的字段或对象中为集合,查询对象中的集合中对象的字段
BoolQueryBuilder boolQueryBuilder = boolQuery();
boolQueryBuilder.must(QueryBuilders.matchQuery("对象.字段", "查询条件"));
boolQueryBuilder.must(QueryBuilders.matchQuery("对象.对象中的集合中对象的字段", "查询条件"));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse search;
try {
search = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
4.查询某字段为null或不为null
BoolQueryBuilder boolQueryBuilder = boolQuery();
//查询不为null的
boolQueryBuilder.must(QueryBuilders.existsQuery("字段名"));
//查询为null的
boolQueryBuilder.mustNot(QueryBuilders.existsQuery("字段名"));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse search;
try {
search = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
5.嵌套查询
BoolQueryBuilder boolQueryBuilder = boolQuery();
boolQueryBuilder.must(QueryBuilders.nestedQuery("字段名",
QueryBuilders.matchQuery("字段名.字段名", "查询条件")));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse search;
try {
search = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
6.分页查询
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//开始索引
sourceBuilder.from(0);
//每页条数
sourceBuilder.size(10);
searchRequest.source(sourceBuilder);
SearchResponse search;
try {
search = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
System.out.println(e);
}
- 更新操作
通过查询条件查询出需要修改数据的id,根据id进行修改
UpdateRequest updateRequest = new UpdateRequest("index", "type", id);
updateRequest.doc("要更新的json", XContentType.JSON);
try {
UpdateResponse updateResponse = restHighLevelClient.update(updateRequest);
} catch (IOException e) {
System.out.println(e);
}
-插入操作
IndexRequest indexRequest = new IndexRequest("index","type");
indexRequest.source("要插入的json", XContentType.JSON);
try {
restHighLevelClient.index(indexRequest);
} catch (IOException e) {
System.out.println(e);
}
-删除操作
通过查询条件查询出需要修改数据的id,根据id进行删除
BulkRequest bulkRequest = new BulkRequest();
DeleteRequest deleteRequest = new DeleteRequest("index","type",id);
bulkRequest.add(deleteRequest);
try {
restHighLevelClient.bulk(bulkRequest);
} catch (IOException e) {
System.out.println(e);
}