Bonjour,
J'utilise FOSElasticaBundle, et j'e'ssaye de faire une requete qui me ramenera tous les objets ayant pour thème une certaine valeur.
Mon code de repository :
C'est assez simple et ca me génère des requetes de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function search(IdeeSearch $ideeSearch) { $query_part = new \Elastica\Query\MatchAll(); $filters = new \Elastica\Filter\Bool(); if($ideeSearch->getTheme() !== null){ $filters->addMust( new \Elastica\Filter\Term(array('theme'=>$ideeSearch->getTheme()->getNom())) ); } $filtered = new \Elastica\Query\Filtered($query_part, $filters); return $this->find($filtered,50);
A priori, ca devrait fonctionner, mais dés que j'ai un thème de défini, je n'ai plus aucun résultat, quelque soit le thème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {"query":{"filtered":{"query":{"match_all":{}},"filter":{"term":{"theme":"Economie"}}}},"size":50}
Voici mon fichier config :
Est-ce que vous y voyez plus clair que moi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 types: Idee: mappings: id: type: integer updatedAt : type : date lastAction : type : date theme : properties: id : type : integer localisations: type: "nested" properties: id : type : integer localisationsNiveau0: ~ localisationsNiveau1: ~ localisationsNiveau2: ~ localisationsNiveau3: ~ isVisible : type : boolean countCommentaires: type: integer title : { analyzer: custom_french_analyzer } description : { analyzer: custom_french_analyzer } content : { analyzer: custom_french_analyzer } persistence: driver: orm # orm, mongodb, propel are available model: JaiUneIdee\SiteBundle\Entity\Idee provider: ~ listener: ~ # by default, listens to "insert", "update" and "delete" finder: ~ repository: JaiUneIdee\SiteBundle\SearchRepository\IdeeRepository
Merci,
Pierre
PS : j'ai essayé en mettant l'id au lieu du nom pour le thème, même résultat. (le nom est stocké dans ES, donc c'est pour ca que je l'utilise)
Partager