Elastica: IN эквивалентный оператор в Elastica - PullRequest
0 голосов
/ 10 октября 2018

После этого вопроса и его ответов , я пытаюсь сделать то же самое, но с PHP Elastica , и мне это не удалось.

Я пытаюсь дать свой new \Elastica\Query\Terms массив и не могу найти правильный способ сделать это.

Я пытался сделать это следующим образом:

new \Elastica\Query\Terms(array($grp_field_p => array('value' => $array_pids)))

Где $array_pids - это массив, содержащий несколько идентификаторов:

array(
    1,
    2,
    3,
    ...
    23015
);

Термин агрегация предполагает $key => $value, а $value не может быть массивом, если он не является числом, он выдает мне ошибку.

запрос [term] не поддерживает [null]]

Вопрос состоит в том, как правильно передать в объединение терминов массив вместо числа для имитацииSQL : IN?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Исходя из исходного кода :

public function __construct($key = '', array $terms = [])
{
    $this->setTerms($key, $terms);
}

он должен работать следующим образом:

new Elastica\Query\Terms($grp_field_p, $array_pids); 
0 голосов
/ 10 октября 2018

Попробуйте вместо этого:

$terms = new Elastica\Query\Terms();       
$terms->setTerms($grp_field_p, $array_pids);  
...