Elastica : IN 相当于 Elastica 算子

Elastica : IN equivalent operator in Elastica

关注 , I'm trying to do the same but with the PHP Elastica 但我没有成功。

我正在尝试为我的 new \Elastica\Query\Terms 提供一个数组,但找不到正确的方法。

我试过这样做:

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

其中$array_pids是一个包含多个id的数组:

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

术语聚合需要 $key => $value$value 不能是数组,如果它不是数字,他会给我一个错误。

[terms] query does not support [null]]

问题是,如何正确地将数组而不是数字传递给 terms 聚合来模拟 SQL : IN

试试这个:

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

基于其 source code :

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

它应该像这样工作:

new Elastica\Query\Terms($grp_field_p, $array_pids);