FOSElasticaBundle – Compter le nombre de résultats d’une Query

Elasticsearch permet de compter les résultats d’une query sans pour autant récupérer les résultats (documents). Voici comment procéder très simplement si vous utilisez FOSElasticaBundle.

Elasticsearch propose plusieurs manières d’uniquement compter les résultats d’une requête.

Soit en en l’intérogant avec l’url /(index)/(type)/_count
Soit en ajoutant le paramètre « searchtype=count » à l’url habituelle : /(index)/(type)/_search?search_type=count

La deuxième solution est recommandée par la doc, et ça tombe bien car c’est celle-ci que permet d’utiliser facilement Elastica et par extension, FOSElasticaBundle.

<?php
    $query = // n'importe quel type de Query Elsatica
    $this->get('fos_elastica.index.votreindex.votretype')->count($query); // retourne le nombre de résultats

Notez que l’on utilise pas le « finder » fournit par le bundle mais directement la classe Elastica\Type via « fos_elastica.index.(index).(type) »

Article très court et très simple, mais qui pourrait faire gagner de temps à d’autres j’espère ! :)