我是ElasticSearch的新手,它是C#的NEST客户端。 显然,没有实现复合聚合的min_doc_count,我应该在请求中使用脚本来获得结果,请参见:https://github.com/elastic/elasticsearch/issues/32452#issuecomment-408769861。
但是,当我尝试在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"))))));
如果删除第二个聚合,则调用将成功,因此很明显,我在BucketScript部分中做错了事。
任何帮助将不胜感激!
答案 0 :(得分:1)
我认为您想使用BucketSelector
而不是BucketScript
.Aggregations(e => e
--> .BucketSelector("bucket_selector", d => d
.BucketsPath(f => f
.Add("counter", "_count"))
.Script("params.counter > 1"))))));