elasticsearch Elasticsearch:日期范围内的操作总和
有一件事我必须与ES(1.7)有关,我不知道如何去做。 让我看看是否可以用sql和表来显示它,也许转换为ES查询更容易。 设想一个表按日期指向elasticsearch Elasticsearch:日期范围内的操作总和,elasticsearch,date-range,elasticsearch,Date Range,有一件事我必须与ES(1.7)有关,我不知道如何去做。 让我看看是否可以用sql和表来显示它,也许转换为ES查询更容易。 设想一个表按日期指向 DATE PURCHASE_COUNT ACCUMULATED_POINTS day 1 5 548 day 2 8 498 day 3 9 623 day 4 9 635 day
DATE PURCHASE_COUNT ACCUMULATED_POINTS
day 1 5 548
day 2 8 498
day 3 9 623
day 4 9 635
day 5 13 620
如果它是一个表,我会执行如下查询来检索我需要的内容:
SELECT SUM(q.AVG_POINT_PURCHASE) as POINT_BY_PURCHASE
FROM (
SELECT (ACCUMULATED_POINTS / PURCHASE_COUNT) as AVG_POINT_PURCHASE
FROM points_by_date
) q;
是否可以在ES中执行此操作?我需要补充的是,这些操作是在日期范围内的桶上完成的,类似这样:
{
"timeout": 1500,
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"from": "2016-12-01",
"to": "2016-12-05",
"include_lower": true,
"include_upper": true
}
}
}
]
}
},
"aggregations": {
"my_ranges": {
"date_range": {
"field": "date",
"ranges": [
{
"from": "2016-12-01",
"to": "2016-12-05"
},
{
"from": "2016-12-06",
"to": "2016-12-10"
}
]
},
"aggregations": {
"TOTAL_POINTS" : {
"sum" : {
"field" : "ACCUMULATED_POINTS"
}
},
"PURCHASE_COUNT" : {
"avg" : {
"field" : "PURCHASE_COUNT"
}
}
}
}
}
}
每个日期范围表示表中的一组N行,我需要从中进行计算
ES查询有一种以前的方法,我得到每个存储桶的平均购买数量,然后将存储桶的累积点数之和除以该平均值。现在我需要先除以,然后按桶累加。如果可能的话,有什么想法吗
提前谢谢 为了防止有人需要它或类似的东西,我设法做到:
{
"timeout": 1500,
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"from": "2016-12-01",
"to": "2016-12-05",
"include_lower": true,
"include_upper": true
}
}
}
]
}
},
"aggregations": {
"my_ranges": {
"date_range": {
"field": "date",
"ranges": [
{
"from": "2016-12-01",
"to": "2016-12-05"
},
{
"from": "2016-12-06",
"to": "2016-12-10"
}
]
},
"aggregations": {
"sum_avg_purchase_point": {
"sum": {
"script": {
"inline": "doc[accumulatedPoints].value.intValue() / (doc[purchaseCount].value.intValue() == 0 ? 1 : doc[purchaseCount].value.intValue())",
"params": {
"accumulatedPoints": "ACCUMULATED_POINTS",
"purchaseCount": "PURCHASE_COUNT"
}
}
}
}
}
}
}
}
我首先尝试了所有针对ES的方法,一旦我让它工作并完成了我需要的演算,在验证了结果之后,我用JavaAPI创建了这个查询
希望它能帮助一些人!问候