0

Rails 3.2.6(/ w Tire)でElasticSearchを使用するProjectオブジェクトに、プロジェクトが投稿された現在の月を表示するファセットがあります。

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"
         }
      }
   }
}
'

日付の計算を使用すると便利です。例:

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

代わりに範囲ファセットを使用できます。この場合、使用されるグループを完全に制御できます。

于 2012-07-16T17:43:18.733 に答える