Elasticsearch 中获取返回匹配记录总数

第一步:准备包裹内容(构建查询条件)

复制代码
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.termQuery("group_id", groupId));
boolQueryBuilder.must(QueryBuilders.termQuery("valid", true));
  • 动作QueryBuilders.boolQuery()
  • 意义:创建一个"查询条件容器"。就像拿一个空的快递箱。
  • 动作.must(...)
  • 意义 :往箱子里放具体的条件。
    • termQuery("group_id", groupId):要求 group_id 字段必须等于某个值(精准匹配)。
    • termQuery("valid", true):要求 valid 字段必须为 true
  • 总结 :这一步是在组装逻辑,告诉 ES 我们要找什么样的数据(既要属于某分组,又要有效)。

第二步:打包封箱(封装查询体)

复制代码
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
  • 动作new SearchSourceBuilder()
  • 意义 :拿出一张快递单模板
  • 动作.query(...)
  • 意义 :把刚才装好条件的"箱子"(boolQueryBuilder)贴在这张单子上。
  • 总结 :这一步是把查询条件转换成 ES 能看懂的JSON 格式 (Source)。SearchSourceBuilder 还可以加其他东西,比如分页(from/size)、排序(sort),但这里我们只用了查询。

第三步:填写收件地址(创建请求对象)

复制代码
CountRequest countRequest = new CountRequest(ArchivesGlobalConstant.PROFILE_INDEX_NAME);
countRequest.source(searchSourceBuilder);
  • 动作new CountRequest(...)
  • 意义 :准备一个专门用来"数数"的信封 ,并写上索引名(去哪个库房查)。
  • 动作.source(...)
  • 意义 :把刚才填好的"快递单"(searchSourceBuilder)塞进这个信封里。
  • 总结 :这一步确定了去哪里查 (索引名)和查什么(具体的查询体)。

第四步:发货并等待回执(执行请求)

复制代码
CountResponse response = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
return response.getCount();
  • 动作restHighLevelClient.count(...)
  • 意义:叫来快递员(HTTP 客户端),把信封发给 ES 服务器。
  • 动作response.getCount()
  • 意义:快递员回来了,手里拿了个小纸条,上面写着数字几就是几。
  • 总结 :这一步是网络传输结果解析。ES 收到请求后,会扫描数据,统计匹配的文档数量,然后把数字返回。

简单模式(如果只是查个全表总数)

场景 :不需要任何条件,就是想知道一个索引里总共有多少条数据。
特点 :可以不用构建复杂的 SearchSourceBuilder,直接发请求。

复制代码
// 只需要这一行核心代码,不需要包装 Query
CountRequest countRequest = new CountRequest("your_index_name");
CountResponse response = client.count(countRequest, RequestOptions.DEFAULT);
long count = response.getCount();
相关推荐
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-9 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe13 小时前
C++——多态
开发语言·c++
阿里云大数据AI技术13 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
心平气和量大福大13 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
阿里云大数据AI技术14 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
从零开始的代码生活_15 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法