对于ES 2. *,我无法在此处或在文档中找到有关此问题的任何内容,如果这是重复,我很抱歉。
我要做的是在ElasticSearch查询中创建一个聚合,这将允许我根据两个日期字段之间的记录差异创建存储桶。
即。如果我在商店的ES中有数据,我可能希望看到purchase_date字段和shipped_date字段之间的时差。
因此,在那个实例中,我想创建一个具有存储桶的聚合,以便在发货时给出我的点击次数 - purchase_date是< 1天,1-2天,3-4天或5天以上。
理想情况下,我希望在ES查询中可以实现这一点。是这种情况还是最好的方法是根据每次击中的时差将结果处理到我自己的数组中?
答案 0 :(得分:0)
我能够通过使用ES 2.4中默认启用的内置表达式语言来实现这一点。我想要的功能是将结果分组以显示EndDate和Date Processed之间的差异,增量为15天。查询的相关部分是:
{
...,
"aggs": {
"reason": {
"date_histogram": {
"min_doc_count": 1,
"interval": "1296000000ms", // 15 days
"format": "epoch_millis",
"script": {
"lang": "expression",
"inline": "doc['DateProcessed'] > doc['EndDate'] ? doc['DateProcessed'] - doc['EndDate'] : -1"
}
}
...
}
}