ElasticSearch方面滚动周(轨道/轮胎)

时间:2012-07-16 13:39:58

标签: ruby-on-rails elasticsearch tire

使用ElasticSearch和Rails 3.2.6(/ w轮胎) 我的Project对象有一个方面,它显示项目发布的当月:

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

这为我提供了按日历月分组的项目。也试过'周'而不是'月',但这给了我按日历周分组。 理想情况下,我们要做的就是拥有像这样的滚动组:

  • 过去7天
  • 最近14天
  • 过去21天

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

2 个答案:

答案 0 :(得分:3)

您的意思是例如:在过去7天,14天,21天内更新过的项目数量?

如果是,请使用range facet

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

答案 1 :(得分:0)

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