elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

ElasticSearch Java API中的筛选日期直方图时间框架

ElasticSearch Java API中的筛选日期直方图时间框架,java,elasticsearch,Java,elasticsearch,我通过JavaAPI在ElasticSearch中使用DateHistogram聚合,但是,即使我添加了一个具有指定从到时间范围的postFilter,查询也会返回索引中所有文档的数据直方图 我正在使用的代码: // note: search is the SearchResponse object private RangeFilterBuilder getDateRangeFilter(DateTime dateFrom, DateTime dateTo){ return Fi

我通过JavaAPI在ElasticSearch中使用DateHistogram聚合,但是,即使我添加了一个具有指定从到时间范围的postFilter,查询也会返回索引中所有文档的数据直方图

我正在使用的代码:

// note: search is the SearchResponse object    
private RangeFilterBuilder getDateRangeFilter(DateTime dateFrom, DateTime dateTo){
   return FilterBuilders.rangeFilter("@timestamp").from(dateFrom.getMillis()).to(dateTo.getMillis());
}
// In search method
search.setPostFilter(getDateRangeFilter(dateFrom, dateTo));
加总:

search.addAggregation(AggregationBuilders
                      .dateHistogram("histogram")
                      .field("@timestamp")
                      .interval(DateHistogram.Interval.DAY));

DataRangeFilter可以很好地处理点击和其他聚合;相反,它不仅仅适用于dateHistogram聚合。如何筛选dateHistogram的时间范围?

问题是您使用的是PostFilter-聚合对查询返回的结果有效,PostFilter出现得太晚了

要使过滤器正常工作,请使用过滤查询(这可能是您想要的查询)或将过滤器作为聚合的一部分


上的此页面包含您所需的所有内容。

谢谢,我已切换到带有范围筛选器的FilteredQuery,并且效果良好。关于性能,与postFilter相比,filteredQuery是否占用更多内存/CPU?我不知道性能如何,我认为它们应该是相似的。你需要用你的数据来尝试一下。