Elasticsearch:我如何过滤&按特定网址路径分组?

时间:2016-09-27 05:24:12

标签: regex elasticsearch elasticsearch-aggregation elasticsearch-query

我有一个索引,网址,如下所示:

path: {
   type: "string"
},
@timestamp: {
   type: "date",
   format: "strict_date_optional_time||epoch_millis"
},

该路径将存储来自URL的PATH部分,例如:

https://facebook.com/profile/photos/album/1

将存储为:

/profile/photos/album/1

我存储了各种路径,因此可能会更像:

/profile/photos/album/1
/profile/photos/album/2
/profile/photos/album/2
/profile/photos/album/2
/profile/friends/1
/profile/friends/2
/newsfeed/me/
/newsfeed/me/
/newsfeed/friendName/

我试图找出每个路径都有的唯一网页浏览量。我不确定如何使用regexp?

我想象它看起来像(伪代码):

{
    "query": {
      "regexp": {
            "path": "" 
        },
        "unique": true
    }
}

1 个答案:

答案 0 :(得分:0)

所以我发现了如何做到这一点。我正在使用aggs方法&使用正则表达式排除结果!

{
  "size": 0, // Don't return any _source results
  "aggs": {
    "path": { // This is the field that I'm 
      "terms": {
        "field": "path",
        "exclude": ".*(media|cache).*" // Add in the values here seper
      }
    }
  }
}

故障:

  1. 路径
    • 只是聚合标签
  2. 字段(路径)
    • 我想在
    • 上运行以下正则表达式的字段
  3. 排除
    • 不要返回路径中有媒体或缓存的文档
  4. 我是从Elasticsearch: Run aggregation on field & filter out specific values using a regexp not matching values

    发现的