0

使用带有 Rails 3.2.6 (/w Tire) 的 ElasticSearch 我的项目对象上有一个方面,它显示当前项目发布的月份:

facet('timeline') { date :post_date, :interval => 'month' }

这给了我按日历月分组的项目。也尝试过“周”而不是“月”,但这让我按日历周分组。理想情况下,我们要做的是有这样的滚动组:

  • 过去 7 天
  • 过去 14 天
  • 过去 21 天

关于如何实现这一点的任何建议,以便我们不限于日历周,并且可以轻松地从数据中挑选出相关的桶?非常感谢

4

2 回答 2

3

您是指例如:过去 7 天、14 天、21 天更新的项目数量?

如果是这样,请使用范围方面

curl -XGET 'http://127.0.0.1:9200/YOUR_INDEX/project/_search?pretty=1'  -d '
{
   "query" : {
      "match_all" : {}
   },
   "facets" : {
      "projects" : {
         "range" : {
            "ranges" : [
               {
                  "to" : "2012-07-09"
               },
               {
                  "to" : "2012-07-02"
               }
            ],
            "field" : "last_modified_date"
         }
      }
   }
}
'

使用date math会很有用,例如:

curl -XGET 'http://127.0.0.1:9200/_search?pretty=1&search_type=count'  -d '
{
   "query" : {
      "match_all" : {}
   },
   "facets" : {
      "created" : {
         "range" : {
            "ranges" : [
               {
                  "to" : "now-7d"
               },
               {
                  "to" : "now-14d"
               }
            ],
            "field" : "created"
         }
      }
   }
}
'

但这尚不支持。我已经打开了一个问题来请求它: https ://github.com/elasticsearch/elasticsearch/issues/2102

于 2012-07-16T17:51:25.143 回答
0

您可以改用Range Facets,您可以完全控制将要使用的组。

于 2012-07-16T17:43:18.733 回答