2016-04-14 31 views
0

如何在symfony2的elasticsearch上使用日期做日期和聚合查詢?如何在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

請向我們展示查詢DSL到目前爲止以及需要轉換爲FosElasticaBundle的信息。 – Val

+0

您好,我添加了我的代碼感謝您的幫助。 –

回答

0

我張貼聚集新的代碼serveur的日期。 使用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 
相關問題