首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带脚本的弹性嵌套SumAggregation

带脚本的弹性嵌套SumAggregation
EN

Stack Overflow用户
提问于 2020-05-15 15:45:20
回答 2查看 317关注 0票数 2

我有一个弹性问题:

代码语言:javascript
复制
"aggs":{
  "GroupByDomeinRelatieCode":{
     "aggs":{
        "SumNettoRegelBedrag":{
           "sum":{
                    "script": {
                      "lang": "painless",
                      "source": "doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100 "
                    } 
                 }
        }
     },
     "terms":{
        "field":"domeinRelatieCode.keyword",
        "size":10000
     }
  },
  "TotalSumAggragation":{
     "sum":{
                "script": {
                  "lang": "painless",
                  "source": "doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100 "
                } 
             }
  }
}

我需要用对象初始化器将其转换为C# Nest。我现在的代码是:

代码语言:javascript
复制
var aggs = new AggregationDictionary()
{
    { "GroupByDomeinRelatieCode" ,   new TermsAggregation("GroupByDomeinRelatieCode")
        {
            Field = Infer.Field<ElasticInvoiceLine>(x => x.DomeinRelatieCode.Suffix("keyword")),
            Size = 10000,
            Aggregations = new SumAggregation("SumNettoRegelBedrag", ADD SCRIPT HERE?)
        }
    },
    { "TotalSumAggragation", new SumAggregation("TotalSumAggragation", ADD SCRIPT HERE?)}
};

我试过使用ScriptQuery和ScriptField,但是SumAggregation不接受。

代码语言:javascript
复制
var script = new ScriptQuery
{
    Name = "UitgesteldeKorting",
    Script = new InlineScript("doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100")
    {
        Lang = "painless"
    },
};

var scriptField = new ScriptField()
{
    Script = new InlineScript("doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100")
    {
        Lang = "painless"
    }
};

我不知道如何将脚本部分添加到SumAggregations中。我该怎么做?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-15 19:59:39

您可以通过Script属性传递脚本,如下所示

代码语言:javascript
复制
Aggregations = new SumAggregation("SumNettoRegelBedrag", null) { Script = new InlineScript("") }

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2020-05-15 19:56:11

你能试试这个吗?

代码语言:javascript
复制
{
  "aggs": {
    "GroupByDomeinRelatieCode": {
      "aggs": {
        "SumNettoRegelBedrag": {
          "sum": {
            "script": "doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100 "
          }
        }
      },
      "terms": {
        "field": "domeinRelatieCode.keyword",
        "size": 10000
      }
    },
    "TotalSumAggragation": {
      "sum": {
        "script": "doc['nettoRegelbedrag'].value * (100 - doc['uitgesteldeKortingsPercentage'].value) / 100 "
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61823205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档