elasticsearch,nest,aggregation,C#,elasticsearch,Nest,Aggregation" /> elasticsearch,nest,aggregation,C#,elasticsearch,Nest,Aggregation" />

C#ElasticSearch嵌套,复合聚合脚本转换错误

C#ElasticSearch嵌套,复合聚合脚本转换错误,c#,elasticsearch,nest,aggregation,C#,elasticsearch,Nest,Aggregation,我是ElasticSearch的新手,它是C#的NEST客户端。 显然,复合聚合的min_doc_计数没有实现,我应该在请求中使用脚本来实现结果,请参见: 但是,当我尝试在C#中实现此功能时,我得到以下错误: "Type: class_cast_exception Reason: "Cannot cast from [boolean] to [java.lang.Number]."" 我的代码如下所示: ISearchResponse<FooBar> duplicateBucket

我是ElasticSearch的新手,它是C#的NEST客户端。 显然,复合聚合的min_doc_计数没有实现,我应该在请求中使用脚本来实现结果,请参见:

但是,当我尝试在C#中实现此功能时,我得到以下错误:

"Type: class_cast_exception Reason: "Cannot cast from [boolean] to [java.lang.Number].""
我的代码如下所示:

ISearchResponse<FooBar> duplicateBucket = _elasticClient.Search<FooBar>(
    s => s
        .Aggregations(a => a
            .Composite("dupe_bucket", c => c
                .Sources(b => b
                    .Terms("foo", x => x
                        .Field("foo"))
                    .Terms("bar", x => x
                         .Field("bar")))
                .Size(1000)
                .Aggregations(e => e
                    .BucketScript("bucket_selector", d => d
                        .BucketsPath(f => f
                            .Add("counter", "_count"))
                        .Script("params.counter > 1"))))));
ISearchResponse duplicateBucket=\u elasticClient.Search(
s=>s
.聚合(a=>a
.Composite(“dupe_bucket”,c=>c
.来源(b=>b
.Terms(“foo”,x=>x
.字段(“foo”))
.术语(“条形”,x=>x
。字段(“栏”))
.尺寸(1000)
.聚合(e=>e
.BucketScript(“bucket_选择器”,d=>d
.BucketsPath(f=>f
添加(“计数器”、“计数”))
.Script(“参数计数器>1”()()()));
如果我删除第二个聚合,调用将成功,因此很明显我在BucketScript部分做了一些错误的事情


任何帮助都将不胜感激

我想您应该使用
BucketSelector
而不是
BucketScript

            .Aggregations(e => e
    -->          .BucketSelector("bucket_selector", d => d
                    .BucketsPath(f => f
                        .Add("counter", "_count"))
                    .Script("params.counter > 1"))))));

生成的查询是什么样子的?我想您应该使用
BucketSelector
而不是
BucketScript
@Val是的,这就成功了,谢谢!