2016-04-14 2 views
0

symfony2のelasticsearchの日付でファセットとaggreagtionクエリを実行する方法は?Symfony2の日付(Datehistogram)のファセットを行う方法:Fos ElasticaBundle

ご協力いただきありがとうございます。

ヒューゴ。

私はこの結果が必要です:年ごとのサーバーの合計。

ここに私のコードはありますが、私は結果がなかったし、私の枝には結果を見ることができません。

ありがとうございました。

ヒューゴ

$search = $this->get('fos_elastica.index.serveurs.serveur'); 

    $queryServeurs = new \Elastica\Query\MatchAll(); 

    $elasticaQueryServeurs = new \Elastica\Query(); 
    $elasticaQueryServeurs->setQuery($queryServeurs); 
    $elasticaQueryServeurs->setSize(0); 

    $elasticaAggregDateServeur = new \Elastica\Aggregation\DateHistogram('dateHistogram','dateGarantie','year'); 
    $elasticaAggregDateServeur->setFormat("dd-MM-YYYY"); 

    $typesServeursaggregation = new \Elastica\Aggregation\Terms('types'); 
    $typesServeursaggregation->setField("type"); 
    $elasticaAggregDateServeur->addAggregation($typesServeursaggregation); 

    $elasticaQueryServeurs->addAggregation($elasticaAggregDateServeur); 

    $resultsServeursDate[] =$elasticaQueryServeurs; 

return $this->container->get('templating')->renderResponse('VefsiffReferentielsBundle:stats:stats.html.twig', array( 'serveursdates' => $resultsServeursDate));

+0

これまでにあり、FosElasticaBundleに翻訳する必要がある質問DSLを表示してください。 – Val

+0

こんにちは、私はあなたの助けを借りて私のコードありがとうございました。 –

答えて

0

私はserveurの日付で集約のための新しいコードを掲載しました。 1つの使用条件DateHistogram: "dateGarantie"フィールドは、ファイルconfig.ymlにDate型である必要があります。ファイルconfig.ymlへ

エキス:

dateGarantie: {type: date} 

ここでは、ファイルコントローラに抽出します。

$search = $this->get('fos_elastica.index.serveurs.serveur'); 

    $queryServeurs = new \Elastica\Query\MatchAll(); 

    $elasticaQueryServeurs = new \Elastica\Query(); 
    $elasticaQueryServeurs->setQuery($queryServeurs); 
    $elasticaQueryServeurs->setSize(0); 

    $elasticaAggregDateServeur = new \Elastica\Aggregation\DateHistogram('dateHistogram','dateGarantie','year'); 
    $elasticaAggregDateServeur->setFormat("YYYY"); 

    $elasticaQueryServeurs->addAggregation($elasticaAggregDateServeur); 
    $resultsDateServeurs = $search->search($elasticaQueryServeurs); 

return $this->container->get('templating')->renderResponse('refBundle:stats:stats.html.twig', array(
             'serveursdates' => $resultsDateServeurs->getAggregations())); 

最後に、これは小枝のためのコードです。私は美しいグラフを持っているためにMorrisのコードを使用しています:

<div class="col-sm-8"> 
         <h3>Serveurs à changer</h3> 
          <style> 
          #serveur2 { 
          width: 800px; 
          height: 300px; 
          margin: auto 0 auto; 
          </style> 
         <div id="serveur2"></div> 

         <script> 
         // Use Morris.Bar 
          Morris.Bar({ 
           element: 'serveur2', 
           data: [ {% for serveursdate in serveursdates.dateHistogram.buckets %} 
           {x: '{{serveursdate.key_as_string}}' ,Total: {{ serveursdate.doc_count }} }, 

           {% endfor %} ], 
           xkey: 'x', 
           ykeys: [ 'Total'], 
           labels: ['Total Serveur'], 
           barColors: function (row, series, type) 
              { 
                 if (type === 'bar') 
                 { 
                 var red = Math.ceil(255 * row.y /this.ymax); 
                 return 'rgb(' + red + ',0,0)'; 
                 } 
                 else { 
                 return '#000'; 
                 } 
              } 

          }); 
         </script> 


         <hr> 
      </div 
関連する問題