我对ElasticSearch来说还很陌生,因此可能缺少明显的东西。我已经读到,使用聚合时不能直接进行分页。
我正在使用ES 7.2和nest 7.0
我的课有两个属性
我想找到前N个结果,然后能够浏览这些结果,所以说得到前50个,然后得到51-100。
最后,我将在不同的字段上进行一些计算,但目前仅想获得一个基本的示例。我想按用户求和。
据我了解,我想在UserId字段上创建一个聚合术语并求和value字段。从理论上讲,这应该给了我一些存储桶(默认为10个)。我不知道如何获得第二个结果列表。
var results = _client.Search<PlayerClass>(s =>
s.Size(0)
.Aggregations(agg => agg
.Terms("term_Agg", t =>
t.Field(f => f.UserId)
.Order(or => or.Descending("sum"))
.Aggregations(aa =>
aa.Sum("sum", sum =>
sum.Field(f => f.Value))
.BucketSort("Value_sort", bs =>
bs.Sort(srt =>
srt.Descending("sum"))
.Size(size)
.From(skip)
)
)
))
.Size(size)
.From(skip)
);
var aggResult = results.Aggregations.Terms("term_Agg");
因此,我会两次拨打以上电话。大小为50。第一次跳过为0,然后为50。
我第一次会得到10个结果。第二次没事。
我确定这里确实有多个错误,但我认为我没有明白。