【问题标题】:Elasticsearch get id from TopHits Aggregation using NESTElasticsearch 使用 NEST 从 TopHits 聚合中获取 id
【发布时间】:2021-01-14 15:06:48
【问题描述】:

所以,要获取文档的内部 id,我这样做:

var hits = response
    .Hits
    .Select(h =>
    {
        h.Source.id = h.Id;
        return h.Source;
    })
    .ToList();

但是当我进行聚合时,如何返回与上面相同的 id?

var agg = response.Aggregations.Terms("inactive_pages");
var hits = agg.Buckets.Select(x => x.TopHits("top_versions").Documents<WebPage>());

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    查看TopHits源代码https://github.com/elastic/elasticsearch-net/blob/master/src/Nest/Aggregations/Metric/TopHits/TopHitsAggregate.cs#L39-L44,有两种方法可以调用:

    • Documents
    • Hits

    现在您正在调用 Documents 并明确获取文档源,如果您尝试执行与上述类似的方法并改用 Hits 会怎样?

    var hits = agg
        .Buckets
        .Select(x => x.TopHits("top_versions").Hits<WebPage>.Select(h =>
        {
            h.Source.id = h.Id;
            return h.Source;
        }));
    

    【讨论】:

    • 哇,谢谢,我没有意识到有一个 Hits 方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2014-09-17
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多