2017-01-24 5 views
0

Я пытаюсь построить в PHP, запрос с различными attribut: это следующая работа Код:Elasticsearch запрос с несколькими attributs и значения

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

        ] 
       ] 
      ] 
     ] 
    ] 
]; 

Но когда я добавить «термин» это не работает:

$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"] 
          ] 
         ] 

        ] 
       ] 
      ] 
     ] 
    ] 
]; 

Я не понимаю, почему это не работает. Может кто-нибудь мне помочь? Благодаря

ответ

0

Вы должны окружить terms и term запрос с другим ассоциативным массивом, например:

$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

Вариант с 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

Спасибо, я не ошибка. Но у меня нет результата: [total] = 0. Не понимаю, почему? ... –

+0

На первый взгляд, вероятно, второй запрос 'term' должен быть' match'. – Val

+0

Да! Я удаляю 'term', и я добавляю 'query' => [ 'match' => [ 'title' => "le jeu de la dame" ], но у меня есть ошибка: Parse Failure, inested: ElasticsearchParseException [Ожидаемое имя поля, но START_OBJECT \ "отфильтровано \"]; –

Смежные вопросы