我有一个弹性问题:
"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中。我该怎么做?谢谢!
发布于 2020-05-15 19:59:39
您可以通过Script属性传递脚本,如下所示
Aggregations = new SumAggregation("SumNettoRegelBedrag", null) { Script = new InlineScript("") }希望这能有所帮助。
发布于 2020-05-15 19:56:11
你能试试这个吗?
{
"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 "
}
}
}
}https://stackoverflow.com/questions/61823205
复制相似问题