2015-08-27 4 views
2

Я хочу сделать запрос для elasticsearch, где он ищет все имена, теперь они, как я делаю это, будут искать одно имя, и когда я пытаюсь поместить несколько имен, он возвращает null, поскольку в качестве примера мы предполагаем, что первое имя «john», поэтому он будет искать Джона и найти его.множественный выбор для elasticsearch

Теперь, если мы выберем другое название «Йонссон», чем он будет искать johnjohnsson, который всегда будет возвращаться пустым.

Теперь, как я могу сделать запрос для поиска всех выбранных имен.

     'query_string' => array(
         'default_field' => 'name', 
         'query' => $name[$i] // how to search multiple names 
        ) 
       ); 
      } 


      $docs = $client->search($params); 
} 

ответ

1

Если $name переменная является массивом, то вы можете просто попытаться отправить все значения, разделенные пробелом, с помощью этого:

... 
'query_string' => array(
    'default_field' => 'name', 
    'query' => implode(" ", $name) 
) 
... 

Так что если $name массив, который содержит термины name1 и name2, тогда запрос в строке запроса будет name1 name2

+0

Вы потрясающий, просто потрясающий, спасибо много :), надеюсь, он будет работать для меня :) –

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