/** * {@inheritdoc} */ public function filter(ProxyQueryInterface $query, $alias, $field, $data) { if (!$data || !is_array($data) || !array_key_exists('value', $data) || !is_numeric($data['value'])) { return; } $type = isset($data['type']) ? $data['type'] : false; $operator = $this->getOperator($type); $queryBuilder = new \Elastica\Query\Builder(); if ($operator === false) { // Match query to get equality $queryBuilder->fieldOpen('match')->field($field, $data['value'])->fieldClose(); } else { // Range query $queryBuilder->range()->fieldOpen($field)->field($operator, $data['value'])->fieldClose()->rangeClose(); } $query->addMust($queryBuilder); }