2017-01-30 9 views
0

У меня есть запрос, который работает. Но я хочу заменить часть на переменную php, поэтому проблема заключается в создании массива и запрос не работает.Elasticsearch: переменная php в запрос

Этот запрос работает:

...[query] => Array 
      (
       [filtered] => Array 
        (
         [query] => Array 
          (
           [multi_match] => Array 
            (
             [query] => Baden-Powell 
             [fields] => Array 
              (
               [0] => title 
               [1] => field_auteur 
               [2] => body:value 
              ) 

            ) 

          ) 

         ... 

Поле может быть пустым, поэтому я хочу, чтобы заменить эту часть [запрос] [multi_match], с помощью переменной, как это:

'query' => [ 
     'filtered' => [ 
      $querytitle, 
      ... 

И $ querytitle =

$querytitle= "'query' => [ 
         'multi_match' => [ 
          'query' => $SearchSimple, 
          'fields' => ['title', 'field_auteur', 'body:value'] 
          ] 
         ], 
        "; 
or $querytitle=""; 

Генерируемый код:

[query] => Array 
      (
       [filtered] => Array 
        (
         [0] => 'query' => [ 
         'multi_match' => [ 
          'query' => Baden-Powell, 
          'fields' => ['title', 'field_auteur', 'body:value'] 
          ] 
         ], 

Проблема заключается в «Массив [0]» перед запросом. Как я могу интегрировать переменную $ querytitle, чтобы иметь запрос, который работает? Спасибо за помощь

+0

Почему переменную '$ querytitle' содержать строку вместо простого содержащего ассоциативный массив? – Val

ответ

0

Проблема возникает из-за того, что переменная $querytitle содержит строку вместо простого содержащего ассоциативный массив.

Попробуйте, как это вместо:

$querytitle = Array('query' => [ 
        'multi_match' => [ 
         'query' => $SearchSimple, 
         'fields' => ['title', 'field_auteur', 'body:value'] 
         ] 
        ] 
      ); 

Затем вам нужно написать новый запрос, как это (т.е. без квадратных скобок после filtered):

'query' => [ 
    'filtered' => $querytitle, 
     ... 
+0

Да, я уже пробовал использовать «Array()». но это то же самое: [filter] => Array ( [0] => Array ( [query] => ... –

+0

Это потому, что вам нужно написать свой новый запрос, как это, без квадратной скобки после 'filter' , см. мой обновленный ответ – Val

+0

Да, но отсутствует квадратная скобка в конце запроса, так что она не работает. –

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

  • Нет связанных вопросов^_^