栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

elasticsearch进行指定字段去重计数,和去重查询(java api)

elasticsearch进行指定字段去重计数,和去重查询(java api)

es7.16.3版本

指定字段去重计数

RestHighLevelClient client = RestHighLevelClientPoolUtil.getClient();
SearchRequest request = new SearchRequest(WebServerdocumentSettings.index);

// 构建查询器
SearchSourceBuilder builder = new SearchSourceBuilder();
// 指定字段进行折叠,这个字段相同的多条数据只显示其中一条
CollapseBuilder collapseBuilder = new CollapseBuilder("需要去重的字段名");

CardinalityAggregationBuilder agg = AggregationBuilders.cardinality("计数自定义名字").field("指定需要计数的字段");

// 复合查询器
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.matchQuery("field","value");


 // 组装查询条件
builder.collapse(collapseBuilder);
builder.sort(WebServerdocumentSettings.Mappings.createTime, SortOrder.DESC);
builder.query(boolQuery);
builder.aggregation(agg);
builder.from(1);
builder.size(10);

// 获取计数信息
ParsedCardinality fileCount = response.getAggregations().get("计数自定义名字");
long total = NumberUtil.parseLong(fileCount.getValueAsString());


for (SearchHit hit : response.getHits().getHits()) {
    Map source = hit.getSourceAsMap();
    // 转换成实体对象
}

// 关闭client

获取指定索引总数

@NotNull
private Long getFieldCounts(String index) throws IOException {
    RestHighLevelClient client = RestHighLevelClientPoolUtil.getClient();
    CountRequest countRequest = new CountRequest();
    countRequest.indices(index);
    CountResponse response = client.count(countRequest, RequestOptions.DEFAULT);
    RestHighLevelClientPoolUtil.returnClient(client);
    return response.getCount();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号