我有这个弹性查询:
"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。我怎样才能做到这一点?谢谢!
您可以尝试这个吗?
{
"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 "
}
}
}
}
您可以像这样通过Script
属性传递脚本
Aggregations = new SumAggregation("SumNettoRegelBedrag", null) { Script = new InlineScript("") }
希望有所帮助。