Недели прокатки граней ElasticSearch (рельсы/шины)

используя ElasticSearch с Rails 3.2.6 (/w Tire). У меня есть фасет в моем объекте Project, который в настоящее время отображает, в каком месяце был опубликован проект:

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

Это дает мне проекты, сгруппированные по календарным месяцам. Также пробовал «неделя» вместо «месяц», но это дает мне группировку по календарной неделе. В идеале, мы хотим иметь скользящие группы, подобные этой:

  • последние 7 дней
  • последние 14 дней
  • последние 21 день

Любые предложения о том, как этого можно добиться, чтобы мы не ограничивались календарными неделями и могли легко выбирать соответствующие сегменты из данных?? Большое спасибо


person bobomoreno    schedule 16.07.2012    source источник


Ответы (2)


Вы имеете в виду, например: количество проектов, которые были обновлены за предыдущие 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"
         }
      }
   }
}
'

Было бы полезно использовать математику даты, например:

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

person DrTech    schedule 16.07.2012
comment
Привет, спасибо, все заработало, на самом деле расчеты даты можно выполнить в Rails/tire - person bobomoreno; 17.07.2012

Вместо этого вы можете использовать фасеты диапазона, где вы иметь полный контроль над группами, которые будут использоваться.

person imotov    schedule 16.07.2012