当前位置: 首页 > news >正文

【Elasticsearch】post_filter

post_filter是在进行聚合之后,再对最终返回的文档列表做额外过滤,不破坏那份聚合/统计的完整性”**。

也就是说如果在聚合之前进行过滤,然后进行聚合,聚合的内容其实是针对于过滤后的文档进行的,比如如果聚合是求平均分,如果先过滤 那么聚合的时候 针对的就是过滤后的文档进行求平均,而是用post_filter 在聚合之后 针对返回的hits文档过滤 不影响聚合 聚合是针对全部的文档来求平均。

换句话说:

  • 如果不需要聚合/统计——直接把条件写进 bool.filterquery 里即可,post_filter 完全没必要。

  • 只有在既想保留完整聚合,又想对最终列表再砍一刀时,post_filter 才成为“不破坏聚合”的工具。

“在用户已经拿到聚合/统计结果以后,再对最终返回的文档列表做一次额外过滤,而不污染聚合。”

因此:

  • 如果你的场景根本不需要聚合(例如只想搜完就完),直接把条件放到 bool.filter 即可,post_filter 完全多余。

  • 只有当你既要用聚合展示全集统计,又要让用户最后点选、切分列表时,post_filter 才派上用场。

所以:
post_filter ≠ 为聚合而生,它只是“不破坏聚合”的一种过滤手段。

post_filter 只过滤最终返回的 hits,完全不碰聚合(aggs)的数据范围;聚合仍然基于 query + filter 阶段后的全集来计算。

http://www.dtcms.com/a/276260.html

相关文章:

  • 【MATLAB代码】Chan方法解算TOA,用于三维目标的定位,锚点数量可自适应。订阅专栏后可查看完整代码
  • Windows环境下解决Matplotlib中文字体显示问题的详细指南
  • PyTorch神经网络实战:从零构建图像分类模型
  • linux----------------------线程同步与互斥(上)
  • 搭建MySQL读写分离
  • LiteFlow源码
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 手把手教你 Aancond 的下载与 YOLOV13 部署(环境的创建及配置下载)以及使用方法,连草履虫都能学会的目标检测实验!
  • net.createServer详解
  • Python后端项目之:我为什么使用pdm+uv
  • 模拟注意力:少量参数放大 Attention 表征能力
  • hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
  • 深入解析C#接口实现的两种核心技术:派生继承 vs 显式实现
  • Java 21 虚拟线程
  • 浏览器宏任务的最小延时:揭开setTimeout 4ms的神话
  • java中的main方法
  • window7,windows10,windows11种系统之间实现打印机共享
  • 创客匠人:从定位逻辑看创始人 IP 如何驱动 IP 变现
  • CompareFace使用
  • Kimi K2万亿参数开源模型原理介绍
  • 【读书笔记】《C++ Software Design》第二章:The Art of Building Abstractions
  • Ruby如何采集直播数据源地址
  • OpenEuler操作系统中检测插入的USB设备并自动挂载
  • 【数据结构】反射、枚举 和 lambda表达式
  • Golang 面向对象(封装、继承、多态)
  • 【C语言】指针进阶:指针和数组
  • 手把手教你用YOLOv10打造智能垃圾检测系统
  • 第七章应用题
  • Geant4 安装---Ubuntu
  • 一篇博客学习Lua_安装使用+语法详解