* * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html */ class BoolQuery extends AbstractQuery { /** * Add should part to query. * * @param \Elastica\Query\AbstractQuery|array $args Should query * * @return $this */ public function addShould($args) { return $this->_addQuery('should', $args); } /** * Add must part to query. * * @param \Elastica\Query\AbstractQuery|array $args Must query * * @return $this */ public function addMust($args) { return $this->_addQuery('must', $args); } /** * Add must not part to query. * * @param \Elastica\Query\AbstractQuery|array $args Must not query * * @return $this */ public function addMustNot($args) { return $this->_addQuery('must_not', $args); } /** * Adds a query to the current object. * * @param string $type Query type * @param \Elastica\Query\AbstractQuery|array $args Query * * @throws \Elastica\Exception\InvalidException If not valid query * * @return $this */ protected function _addQuery($type, $args) { if ($args instanceof AbstractQuery) { $args = $args->toArray(); } if (!is_array($args)) { throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\AbstractQuery'); } return $this->addParam($type, $args); } /** * Sets boost value of this query. * * @param float $boost Boost value * * @return $this */ public function setBoost($boost) { return $this->setParam('boost', $boost); } /** * Set the minimum number of of should match. * * @param int $minimumNumberShouldMatch Should match minimum * * @return $this */ public function setMinimumNumberShouldMatch($minimumNumberShouldMatch) { return $this->setParam('minimum_number_should_match', $minimumNumberShouldMatch); } /** * Converts array to an object in case no queries are added. * * @return array */ public function toArray() { if (empty($this->_params)) { $this->_params = new \stdClass(); } return parent::toArray(); } }