Elasticsearch在两个字段上搜索百分比聚合



我想从分布在两个字段中的一组值中检索Q1和Q2。

我的文档看起来像:

{
amount: 100,
type: "CREDIT"
}
{
amount: 80,
type: "DEBIT"
}

这些数值实际上分别代表100和-80的数值。

假设我的集合的所有值都是[100, -80, 20, -30, 50],所以我的百分位数是Q1=-30Q3=-50

如何编写一个查询,告诉elasticsearhc需要将类型为"DEBIT">的文档作为负值考虑,然后执行百分比聚合?

您可以使用脚本执行百分比聚合。下面的脚本检查类型是否为借方,然后返回负值,否则返回正值

"aggs": {
"percentile_val": {
"percentiles": {
"script": {
"lang": "painless",
"source": "if( doc['type.keyword'].value=='DEBIT') { return -doc['amount'].value;} else {doc['amount'].value}"
}
}
}
}

最新更新