2017-01-24 3 views
0

Ich versuche zu konstruieren, in php, eine Abfrage mit unterschiedlichen Ausprägungs: die folgende Code Arbeit:Elasticsearch Abfrage mit mehreren attributen und Wert

$searchParams = [ 
    'body' => [ 
     "from"=> 0, 
     "size"=> 30000, 
     'query' => [ 
      'filtered'=> [ 
       'filter' => [ 
        'bool' => [ 
         'must' => [ 
          'terms' => [ 
           'field_support' => [105,106,1896,1897] 
          ] 
         ] 

        ] 
       ] 
      ] 
     ] 
    ] 
]; 

Aber wenn ich „Begriff“ hinzufügen, es funktioniert nicht:

$searchParams = [ 
    'body' => [ 
     "from"=> 0, 
     "size"=> 30000, 
     'query' => [ 
      'filtered'=> [ 
       'filter' => [ 
        'bool' => [ 
         'must' => [ 
          'terms' => [ 
           'field_support' => [105,106,1896,1897] 
          ], 
          'term' => [ 
           'title' => ["le jeu de la dame"] 
          ] 
         ] 

        ] 
       ] 
      ] 
     ] 
    ] 
]; 

Ich verstehe nicht, warum es nicht funktioniert. Kann mir jemand helfen? Dank

Antwort

0

Sie benötigen terms und term Abfrage mit einem anderen assoziatives Array zu umgeben, wie folgt aus:

$searchParams = [ 
    'body' => [ 
     "from"=> 0, 
     "size"=> 30000, 
     'query' => [ 
      'filtered'=> [ 
       'filter' => [ 
        'bool' => [ 
         'must' => [ 
          [ 
          'terms' => [ 
           'field_support' => [105,106,1896,1897] 
          ] 
          ], 
          [ 
          'term' => [ 
           'title' => ["le jeu de la dame"] 
          ] 
          ] 
         ] 

        ] 
       ] 
      ] 
     ] 
    ] 
]; 

UPDATE

Variant mit match

$searchParams = [ 
    'body' => [ 
     "from"=> 0, 
     "size"=> 30000, 
     'query' => [ 
      'filtered'=> [ 
       'query' => [ 
        'match' => [ 
         'title' => ["le jeu de la dame"] 
        ] 
       ], 
       'filter' => [ 
        'terms' => [ 
         'field_support' => [105,106,1896,1897] 
        ] 
       ] 
      ] 
     ] 
    ] 
]; 
+0

Danke, habe ich nicht Error. Aber ich habe kein Ergebnis: [total] = 0. Ich verstehe nicht warum? ... –

+0

Auf den ersten Blick sollte wahrscheinlich die zweite 'term'-Abfrage ein' match' sein. – Val

+0

Ja! Ich lösche 'term' und ich füge 'query' hinzu => [ 'match' => [ 'title' => "le jeu de la dame" ], aber ich habe einen Fehler: Parse Failure, verschachtelt: ElasticsearchParseException [Erwarteter Feldname, aber START_OBJECT \ "filtered \"]; –

Verwandte Themen