【发布时间】:2019-11-17 06:44:11
【问题描述】:
我一直在使用 ElasticSearch 中的过滤器聚合,它允许我指定独立的过滤器,每个过滤器为提供的每个过滤器提供单独的计数。
我无法让 DataRangeQuery 作为过滤器运行。如果我添加 DateRangeQuery 作为过滤器,Elastic 会给我以下错误。有谁知道将日期范围查询作为过滤器放入过滤器聚合的方法?
“search_phase_execution_exception”
以下是我从业务角度尝试做的示例用例。
内容类型:任务
截止日期方面
- 今天到期,减去 7 天
- 本周到期
- 下周到期
我在下面提供了相关 NEST/.Net Elastic 代码的代码 sn-p。
aggs.Add(facet.Name, new FiltersAggregation(Constants.CONST_FACETNAME_DUEDATE)
{
OtherBucket = false,
Filters = new NamedFiltersContainer
{
{ Constants.CONST_TODAYMINUS7, BuildTodayMinus7Days(DateTime.Now.AddDays(-7).ToString(), "endDate") && filter },
{ Constants.CONST_TODAY, BuildTodayQuery()},
{ Constants.CONST_THISWEEK, BuildThisWeekQuery()},
{ Constants.CONST_NEXTWEEK, BuildNextWeekQuery()},
{ Constants.CONST_NEXT30DAYS, BuildNext30DaysQuery()},
{ Constants.CONST_LASWEEK, BuildLastWeekQuery()},
{ Constants.CONST_NO_DUE_DATE, BuildNoDueDateQuery()}
}
});
....
private DateRangeQuery BuildTodayMinus7Days(string date, string field)
{
var qDateRange = new DateRangeQuery
{
Field = field,
GreaterThanOrEqualTo = date,
};
return qDateRange;
}
【问题讨论】:
标签: elasticsearch