【问题标题】:C# ElasticSearch NEST, Composite aggregation script casting errorC# ElasticSearch NEST,复合聚合脚本转换错误
【发布时间】:2020-01-23 12:48:34
【问题描述】:

我是 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 部分做错了。

任何帮助将不胜感激!

【问题讨论】:

  • 生成的查询是什么样的?
  • 我认为您想使用BucketSelector 而不是BucketScript
  • @Val 是的,成功了,谢谢!

标签: c# elasticsearch nest aggregation


【解决方案1】:

我想你想使用BucketSelector 而不是BucketScript

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多