我有这个弹性查询:
"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。 我当前的代码:
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 不接受它。
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 中。我怎样才能做到这一点? 谢谢!
最佳答案
您可以通过 Script
属性传递脚本,如下所示
Aggregations = new SumAggregation("SumNettoRegelBedrag", null) { Script = new InlineScript("") }
希望有帮助。
关于elasticsearch - 带脚本的 Elastic NEST SumAggregation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61823205/