首页 > 解决方案 > 如何在 Nest 中对重要术语聚合使用百分比分数

问题描述

我正在尝试在 Nest 中重新创建以下聚合

"aggs": {
    "related_organisations": {
        "significant_terms": {
             "field": "organisations.keyword",
                 "percentage": {},
                 "min_doc_count": 5
                 "size": 10
             }
         }
     }
}

我无法弄清楚函数表达式中的含义PercentageScore

.Aggregations(a => a
    .SignificantTerms("related_organisations", sigTerms => sigTerms
        .Field("organisations.keyword")
        .Size(10)
        .PercentageScore(p => [[what goes here??]])
        .MinimumDocumentCount(5)

我可以通过这样做来编译它,p => p但它不能正确构建查询并引发异常

System.TypeLoadException: GenericArguments[0], 'Nest.PercentageScoreHeuristic', on 'Nest.ReadAsFormatter`2[TRead,T]' violates the constraint of type parameter 'TRead'. 

我也尝试过nullnew PercentageScoreHeuristicDescriptor()但没有运气。

标签: elasticsearchnestelasticsearch-aggregation

解决方案


正如评论中提到的,这是一个错误,正在修复中。

为了解决这个问题,直到我能够使用 Nest 的固定版本,我使用了脚本分数,并在其中复制了百分比分数:

.Aggregations(a => a
    .SignificantTerms("related_organisations", sigTerms => sigTerms
        .Field("organisations.keyword")
        .Size(10)
        .Script(s => s.Script("params._subset_freq/params._superset_freq"))
        .MinimumDocumentCount(5)

推荐阅读