elasticsearch巢式聚集索引,然后应用分页

时间:2019-07-23 16:34:22

标签: elasticsearch elasticsearch-aggregation

我对ElasticSearch来说还很陌生,因此可能缺少明显的东西。我已经读到,使用聚合时不能直接进行分页。

我正在使用ES 7.2和nest 7.0

我的课有两个属性

  • UserId(向导)
  • 值(十进制)

我想找到前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个结果。第二次没事。

我确定这里确实有多个错误,但我认为我没有明白。

0 个答案:

没有答案