Elasticsearch:编写聚合查询

时间:2016-05-04 10:12:39

标签: elasticsearch

我在ElasticSearch中有一个文件pageTransition,用于存储用户访问的页面。它有fromPageId,toPageId,创建(访问时间)等。 当用户从第183页到第184页时,单个记录如下所示

"clientId": 0,
"fromUrl": "http://ats.survale.com/Apply/AdditionalInfo.aspx",
"toUrl": "http://ats.survale.com/Apply/ConfirmInfo.aspx",
"fromPageId": "183",
"toPageId": "184",
"created": "2016-02-29T18:22:49.509Z"  

现在我想要在过去7天内计算所有pageTransitions。我的意思是182-183:12,183-184:13等等。除此之外,我还想要用户在每个页面上花费的平均时间。是否可以使用聚合?

1 个答案:

答案 0 :(得分:0)

要获得7天内的页面转换次数,您可以使用:

{
  "size": 0,
  "query": {
    "bool": {
      "filter": {
        "range": {
          "created": {
            "gt": "now-7d"
          }
        }
      }
    }
  },
  "aggs": {
    "transitions": {
      "terms": {
        "script": "[doc.fromPageId.value, doc.toPageId].join('-')"
      }
    }
  }
}

为了实现这一点,您需要确保dynamic scripting is enabled