Salut,
Ce n'est pas si simple. La page
https://karussell.wordpress.com/2012/01/19/birds-eye-view-on-elasticsearch-its-query-dsl/
explique bien le QSL et notamment les trois possibilitées de filtrage
et leurs liens avec le facetting.
Par defaut le facetting s'applique au résultat de la query.
typiquement j'utilise une "filtered" query et les comptages se font
bien sur les données filtrées. Si on veux que le comptage s'applique à
un sous ensemble du résultat on peut ajouter à la définition de chaque
facet un "facet_filter". Le dernier cas est celui du "filter" à la
racine du QSL il n'a pas d'impact sur les comptages. J'imagine son
utilisation après une première requête pour filtrer par facet en
cliquant sur celles-ci sans changer les comptages.
J'ai donc refait un tests complet ce matin (d'ou mon délai de réponse)
avec un jeu d' 1.5 million de document et des filtres ramenant 1 jour
(245 docs), 1 mois (4329 docs), 1 an (124541 docs) et tout
(1502872docs).
Entre les différentes méthodes de filtrage décrit et les différents
cas (1 jour, 1 mois, etc.) je ne vois pas de différence dans l'usage
du HEAP, toujours autour de 600 Mo.
Je pense donc qu'ES charge l'index complet des termes du champs sur
lequel on fait le facetting.
> Shay a annoncé il y a quelques mois qu'une des prochaines versions consiste
> à optimiser la mémoire pour les facettes.
Oui je crois (j'espère) que ça devrait être dans la 0.20 car c'est
quelque chose de très demandé.
Benoît