首页
学习
活动
专区
圈层
工具
发布

理解elasticsearch的post_filter

《Elasticsearch 权威指南》中,post_filter出现在聚合章节,描述post_filter的作用为:只过滤搜索结果,不过滤聚合结果; 描述比较简单,还是用实例来加深理解吧。...环境信息 以下是本次实例的环境信息,请确保您的Elasticsearch可以正常运行: 操作系统:Ubuntu 18.04.2 LTS JDK:1.8.0_191 Elasticsearch:6.7.1...如果您想将上图中的数据导入到自己的es环境,请参考《Elasticsearch聚合学习之一:基本操作》,文中有详细的导入步骤; 假设一个查询聚合的需求 对上述索引,假设我们的查询需求是:品牌为ford的汽车有哪些颜色...的基本功能已介绍完毕,如果只做查询不做聚合,post_filter的作用和我们常用的filter是类似的,但由于post_filter是在查询之后才会执行,所以post_filter不具备filter对查询带来的好处...(忽略评分、缓存等),因此,在普通的查询中不要用post_filter来替代filter;

1.6K20

说说 Elasticsearch filter 和 post_filter 的区别?

1、线上问题 如上所示,问题是:“把 green 这个条件放到 query 里面做一个 bool 查询,有什么不一样吗?”...2、拿官方样例飞行数据举例 这个问题涉及到:filter(过滤器)和 post_filter(后过滤器)的区别,我们拿官方样例索引:kibana_sample_data_flights 做一样演示。...field": "DestWeather", "size": 10 } } } } 召回结果如下(忽略 检索部分,只保留聚合): 4、在filter 基础上加 post_filter...6、post_filter 还可以自定义评分 POST kibana_sample_data_flights/_search { "query": { "bool": { "filter...post_filter,应用于执行检索之后或者聚合之后,可以看做“后过滤器”,对检索或聚合之后的结果集再进行过滤,只检索结果受影响。

1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    彻底搞懂 Elasticsearch Java API

    说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识。...客户端,并且Java自身是可以简单支持ES的API的,于是就先做成了TransportClient。...当然缺点是存在的,就是版本的问题。ES的小版本更新非常频繁,在最理想的情况下,客户端的版本要和ES的版本一致(至少主版本号一致),次版本号不一致的话,基本操作也许可以,但是新API就不支持了。...参考资料: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high.html Java High...地址: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high.html 作者:epicGeek

    10.2K40

    ElasticSearch java API - 聚合查询

    中,多字段上的聚合操作需要用到子聚合(subAggregation),初学者可能找不到方法(网上资料比较少,笔者在这个问题上折腾了两天,最后度了源码才彻底搞清楚T_T),后边会特意说明多字段聚合的实现方法...例如要计算每个球队的球员数,如果使用SQL语句,应表达如下: select team, count(*) as player_count from player group by team; ES的java...,应表达如下: select team, avg(age)as avg_age, sum(salary) as total_salary from player group by team; ES的java...select team, sum(salary) as total_salary from player group by team order by total_salary desc; ES的java...6.Aggregation结果条数的问题 默认情况下,search执行后,仅返回10条聚合结果,如果想反悔更多的结果,需要在构建TermsBuilder 时指定size: TermsBuilder teamAgg

    2.3K20

    Elasticsearch中的post_filter后置过滤器技术

    本文将详细介绍Elasticsearch中的Post_Filter后置过滤器技术,包括其工作原理、使用场景、DSL使用示例以及优化策略等内容。...这时,我们可以使用Post_Filter对这些条件进行过滤。 需要对聚合结果进行过滤 在Elasticsearch中,聚合操作允许我们对数据进行统计和分析。...五、优化策略 为了充分发挥Post_Filter后置过滤器的优势并避免潜在的性能问题,可以采取以下优化策略: 避免在Post_Filter中使用复杂的脚本或计算:复杂的脚本或计算可能会增加过滤的开销,从而影响查询的总体性能...监控和分析查询性能:使用Elasticsearch提供的监控和分析工具来定期检查查询的性能。如果发现Post_Filter对性能产生了显著影响,我们可以考虑调整过滤条件或查询结构来优化性能。...六、结语 Post_Filter后置过滤器是Elasticsearch中一种强大的工具,它允许我们在查询执行完成后对结果进行额外的过滤操作。

    54310

    ElasticSearch AggregationBuilders java api常用聚会查询

    中,多字段上的聚合操作需要用到子聚合(subAggregation),初学者可能找不到方法(网上资料比较少,笔者在这个问题上折腾了两天,最后度了源码才彻底搞清楚T_T),后边会特意说明多字段聚合的实现方法...例如要计算每个球队的球员数,如果使用SQL语句,应表达如下: select team, count(*) as player_count from player group by team; ES的java...如果使用SQL语句,应表达如下: select team, position, count(*) as pos_count from player group by team, position; ES的java...: select team, sum(salary) as total_salary from player group by team order by total_salary desc; ES的java...Aggregation结果条数的问题 默认情况下,search执行后,仅返回10条聚合结果,如果想反悔更多的结果,需要在构建TermsBuilder 时指定size: TermsBuilder teamAgg

    4.1K21
    领券