我希望在Elastic中实现下面这个SQL查询的等效功能:
select BookId, PubDate, count(1)
from BookMessages
where BookId in (1,2)
group by BookId, PubDate
因此,我在C#中编写了以下查询。
var searchresponse = client.Search<BookMessages>(s => s
.Query(q => q
.Bool(bq => bq
.Filter(fq => fq.Terms(t => t.Field(f => f.BookId).Terms(BookList)))))
.Aggregations(a => a
.Terms("group_by_book", ts => ts
.Field(f => f.BookId)
.Aggregations(a1 => a1
.DateHistogram("Date", dat => dat
.Field(f1 => f1.PubDate)
.Interval(DateInterval.Day)
.Format("dd/MM/yyyy")
)))));
我尝试使用以下代码循环输出,但无法进一步循环。
foreach (var agg in searchresponse.Aggregations)
{
string key = agg.Key;
IAggregate objIAgg = agg.Value;
}
我可以在快速查看中看到这些值,但我怎样获取这些值?
Aggs
助手,因为它可以安全地执行从IAggregate
到给定聚合的具体聚合类型的转换。 - Russ Cam