提问要多花一点心思哦

setPostFilter不起作用

Elasticsearch | 作者 sebiany | 发布于2016年03月30日 | 阅读数:5627


在进行了字段name聚合后,想用filter选取符合10到11岁的人的聚合结果(其中age是整型),但是filter却不起作用,望各位大神能解答一下,多谢!

 SearchResponse sr = client.prepareSearch("newtesti").setTypes("newtestd")
                .setQuery(QueryBuilders.matchAllQuery())
                .addAggregation(AggregationBuilders.terms("Title").field("name"))
                .setPostFilter(QueryBuilders.rangeQuery("age").from(10).to(11))
                .execute().actionGet();     

 Terms source = sr.getAggregations().get("Title");
        
        System.out.println(source);
        for(Terms.Bucket b:source.getBuckets()){
            System.out.println("src_ip:"+b.getKey()+"\tIpCount:"+b.getDocCount());
        }
已邀请:

helloes

赞同来自:


post_filter:只对搜索结果起作用,不影响aggregation结果
filtered query:对搜索结果和aggregation都起作用


所以,根据你的需求,应该用filtered query.

stab - freshman

赞同来自:

补充楼上,还有filter_agg,只影响aggregation,不影响搜索

要回复问题请先登录注册