/**
  * {@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);
 }