es的一些操作:
1.es的一些操作
@Autowired.
private RestHighLevelClient restHighLevelClient.
删除一条索引下的所有数据
DeleteByQueryRequest deleteByQueryRequest =
new DeleteByQueryRequest();
deleteByQueryRequest.setRefresh(true);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
//指定存在该索引下的字段
boolQueryBuilder.must(QueryBuilders.existsQuery("taskId"));
deleteByQueryRequest.setQuery(boolQueryBuilder);
//索引
deleteByQueryRequest.indices("hangzhou_hongwuyue_801");
deleteByQueryRequest.types(EsDicIndexUtil.FULL_TEXT);
restHighLevelClient.deleteByQuery(deleteByQueryRequest,
RequestOptions.DEFAULT);
查询一条索引下的所有/部分数据
//创建Request
SearchRequest searchRequest = new SearchRequest();
searchRequest.types(EsDicIndexUtil.FULL_TEXT);
//指定查询条件
SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder();
//查询全部
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
//查询部分
searchSourceBuilder.query(QueryBuilders.matchQuery
("province", "黑龙江"));
//查询部分(前缀查询)
searchSourceBuilder.query(QueryBuilders.prefixQuery
("city", "杭州"));
//查询部分(模糊查询,并指定前两个字不允许出错)
searchSourceBuilder.query(QueryBuilders.fuzzyQuery
("city", "杭州啦啦啦啦啦").prefixLength(2));
//查询部分(类似Mysql中的like,在字符串中指定通配符* 和占位符?)
searchSourceBuilder.query(QueryBuilders.
wildcardQuery("city", "杭*"));
//查询范围(gt 大于 gte 大于等于 lt 小于 lte 小于等于)
searchSourceBuilder.query(QueryBuilders.
rangeQuery("girlFriend").lte(10).gte(5));
//查询(手写正则)
searchSourceBuilder.query(QueryBuilders.
regexpQuery("iphone", "139[0-9]{8}"));
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//查询省份是杭州或黑龙江
boolQueryBuilder.should(QueryBuilders.
termQuery("province", "杭州"));
boolQueryBuilder.should(QueryBuilders.
termQuery("province", "黑龙江"));
//查询不是男的
boolQueryBuilder.mustNot(QueryBuilders.termQuery("xb", 1));
//查询smsContent包含中国和平安
boolQueryBuilder.must(QueryBuilders.matchQuery("smsContent", "中国"));
boolQueryBuilder.must(QueryBuilders.matchQuery("smsContent", "平安"));
//过滤
boolQueryBuilder.filter(QueryBuilders.
termQuery("corpName", "河马先生"));
boolQueryBuilder.filter(QueryBuilders.
rangeQuery("fee").lte(5));
searchSourceBuilder.query(boolQueryBuilder);
searchRequest.source(searchSourceBuilder);
//执行查询
SearchResponse searchResponse = restHighLevelClient.
search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
hits.forEach(a -> {
//操作数据
});