| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591 |
- <?php
- namespace Elastica\QueryBuilder\DSL;
- use Elastica\Exception\NotImplementedException;
- use Elastica\Query\AbstractSpanQuery;
- use Elastica\Query\BoolQuery;
- use Elastica\Query\Boosting;
- use Elastica\Query\Common;
- use Elastica\Query\ConstantScore;
- use Elastica\Query\DisMax;
- use Elastica\Query\Exists;
- use Elastica\Query\FunctionScore;
- use Elastica\Query\Fuzzy;
- use Elastica\Query\GeoDistance;
- use Elastica\Query\HasChild;
- use Elastica\Query\HasParent;
- use Elastica\Query\Ids;
- use Elastica\Query\Match;
- use Elastica\Query\MatchAll;
- use Elastica\Query\MatchNone;
- use Elastica\Query\MoreLikeThis;
- use Elastica\Query\MultiMatch;
- use Elastica\Query\Nested;
- use Elastica\Query\ParentId;
- use Elastica\Query\Percolate;
- use Elastica\Query\Prefix;
- use Elastica\Query\QueryString;
- use Elastica\Query\Range;
- use Elastica\Query\Regexp;
- use Elastica\Query\SimpleQueryString;
- use Elastica\Query\SpanContaining;
- use Elastica\Query\SpanFirst;
- use Elastica\Query\SpanMulti;
- use Elastica\Query\SpanNear;
- use Elastica\Query\SpanNot;
- use Elastica\Query\SpanOr;
- use Elastica\Query\SpanTerm;
- use Elastica\Query\SpanWithin;
- use Elastica\Query\Term;
- use Elastica\Query\Terms;
- use Elastica\Query\Type;
- use Elastica\Query\Wildcard;
- use Elastica\QueryBuilder\DSL;
- /**
- * elasticsearch query DSL.
- *
- * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com>
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-queries.html
- */
- class Query implements DSL
- {
- /**
- * must return type for QueryBuilder usage.
- *
- * @return string
- */
- public function getType()
- {
- return self::TYPE_QUERY;
- }
- /**
- * match query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
- *
- * @param string $field
- * @param mixed $values
- *
- * @return Match
- */
- public function match($field = null, $values = null)
- {
- return new Match($field, $values);
- }
- /**
- * multi match query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html
- *
- * @return \Elastica\Query\MultiMatch
- */
- public function multi_match()
- {
- return new MultiMatch();
- }
- /**
- * bool query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
- *
- * @return \Elastica\Query\BoolQuery
- */
- public function bool()
- {
- return new BoolQuery();
- }
- /**
- * boosting query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html
- *
- * @return Boosting
- */
- public function boosting()
- {
- return new Boosting();
- }
- /**
- * common terms query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-common-terms-query.html
- *
- * @param string $field
- * @param string $query
- * @param float $cutoffFrequency percentage in decimal form (.001 == 0.1%)
- *
- * @return Common
- */
- public function common_terms($field, $query, $cutoffFrequency)
- {
- return new Common($field, $query, $cutoffFrequency);
- }
- /**
- * constant score query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-constant-score-query.html
- *
- * @param \Elastica\Query\AbstractQuery|array|null $filter
- *
- * @return ConstantScore
- */
- public function constant_score($filter = null)
- {
- return new ConstantScore($filter);
- }
- /**
- * dis max query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html
- *
- * @return DisMax
- */
- public function dis_max()
- {
- return new DisMax();
- }
- /**
- * function score query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html
- *
- * @return FunctionScore
- */
- public function function_score()
- {
- return new FunctionScore();
- }
- /**
- * fuzzy query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html
- *
- * @param string $fieldName Field name
- * @param string $value String to search for
- *
- * @return Fuzzy
- */
- public function fuzzy($fieldName = null, $value = null)
- {
- return new Fuzzy($fieldName, $value);
- }
- /**
- * geo shape query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-query.html
- */
- public function geo_shape()
- {
- throw new NotImplementedException();
- }
- /**
- * has child query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-query.html
- *
- * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query
- * @param string $type Parent document type
- *
- * @return HasChild
- */
- public function has_child($query, $type = null)
- {
- return new HasChild($query, $type);
- }
- /**
- * has parent query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-query.html
- *
- * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query
- * @param string $type Parent document type
- *
- * @return HasParent
- */
- public function has_parent($query, $type)
- {
- return new HasParent($query, $type);
- }
- /**
- * ids query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html
- *
- * @param array $ids
- *
- * @return Ids
- */
- public function ids(array $ids = [])
- {
- return new Ids($ids);
- }
- /**
- * match all query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html
- *
- * @return MatchAll
- */
- public function match_all()
- {
- return new MatchAll();
- }
- /**
- * match none query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html#query-dsl-match-none-query
- *
- * @return MatchNone
- */
- public function match_none()
- {
- return new MatchNone();
- }
- /**
- * more like this query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html
- *
- * @return MoreLikeThis
- */
- public function more_like_this()
- {
- return new MoreLikeThis();
- }
- /**
- * nested query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html
- *
- * @return Nested
- */
- public function nested()
- {
- return new Nested();
- }
- /**
- * @param $type
- * @param $id
- * @param $ignoreUnmapped
- *
- * @return ParentId ParentId
- */
- public function parent_id($type, $id, $ignoreUnmapped = false)
- {
- return new ParentId($type, $id, $ignoreUnmapped);
- }
- /**
- * prefix query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html
- *
- * @param array $prefix Prefix array
- *
- * @return Prefix
- */
- public function prefix(array $prefix = [])
- {
- return new Prefix($prefix);
- }
- /**
- * query string query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
- *
- * @param string $queryString OPTIONAL Query string for object
- *
- * @return QueryString
- */
- public function query_string($queryString = '')
- {
- return new QueryString($queryString);
- }
- /**
- * simple_query_string query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html
- *
- * @param string $query
- * @param array $fields
- *
- * @return SimpleQueryString
- */
- public function simple_query_string($query, array $fields = [])
- {
- return new SimpleQueryString($query, $fields);
- }
- /**
- * range query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
- *
- * @param string $fieldName
- * @param array $args
- *
- * @return Range
- */
- public function range($fieldName = null, array $args = [])
- {
- return new Range($fieldName, $args);
- }
- /**
- * regexp query.
- *
- * @param string $key
- * @param string $value
- * @param float $boost
- *
- * @return Regexp
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html
- */
- public function regexp($key = '', $value = null, $boost = 1.0)
- {
- return new Regexp($key, $value, $boost);
- }
- /**
- * span first query.
- *
- * @param \Elastica\Query\AbstractQuery|array $match
- * @param int $end
- *
- * @return SpanFirst
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-first-query.html
- */
- public function span_first($match = null, $end = null)
- {
- return new SpanFirst($match, $end);
- }
- /**
- * span multi term query.
- *
- * @param \Elastica\Query\AbstractQuery|array $match
- *
- * @return SpanMulti
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-multi-term-query.html
- */
- public function span_multi_term($match = null)
- {
- return new SpanMulti($match);
- }
- /**
- * span near query.
- *
- * @param array $clauses
- * @param int $slop
- * @param bool $inOrder
- *
- * @return SpanNear
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html
- */
- public function span_near($clauses = [], $slop = 1, $inOrder = false)
- {
- return new SpanNear($clauses, $slop, $inOrder);
- }
- /**
- * span not query.
- *
- * @param AbstractSpanQuery|null $include
- * @param AbstractSpanQuery|null $exclude
- *
- * @return SpanNot
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-not-query.html
- */
- public function span_not(AbstractSpanQuery $include = null, AbstractSpanQuery $exclude = null)
- {
- return new SpanNot($include, $exclude);
- }
- /**
- * span_or query.
- *
- * @param array $clauses
- *
- * @return SpanOr
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-or-query.html
- */
- public function span_or($clauses = [])
- {
- return new SpanOr($clauses);
- }
- /**
- * span_term query.
- *
- * @param array $term
- *
- * @return SpanTerm
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html
- */
- public function span_term(array $term = [])
- {
- return new SpanTerm($term);
- }
- /**
- * span_containing query.
- *
- * @param AbstractSpanQuery|null $little
- * @param AbstractSpanQuery|null $big
- *
- * @return SpanContaining
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-containing-query.html
- */
- public function span_containing(AbstractSpanQuery $little = null, AbstractSpanQuery $big = null)
- {
- return new SpanContaining($little, $big);
- }
- /**
- * span_within query.
- *
- * @param AbstractSpanQuery|null $little
- * @param AbstractSpanQuery|null $big
- *
- * @return SpanWithin
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-within-query.html
- */
- public function span_within(AbstractSpanQuery $little = null, AbstractSpanQuery $big = null)
- {
- return new SpanWithin($little, $big);
- }
- /**
- * term query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
- *
- * @param array $term
- *
- * @return Term
- */
- public function term(array $term = [])
- {
- return new Term($term);
- }
- /**
- * terms query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
- *
- * @param string $key
- * @param array $terms
- *
- * @return Terms
- */
- public function terms($key = '', array $terms = [])
- {
- return new Terms($key, $terms);
- }
- /**
- * wildcard query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html
- *
- * @param string $key OPTIONAL Wildcard key
- * @param string $value OPTIONAL Wildcard value
- * @param float $boost OPTIONAL Boost value (default = 1)
- *
- * @return Wildcard
- */
- public function wildcard($key = '', $value = null, $boost = 1.0)
- {
- return new Wildcard($key, $value, $boost);
- }
- /**
- * geo distance query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html
- *
- * @param string $key
- * @param array|string $location
- * @param string $distance
- *
- * @return GeoDistance
- */
- public function geo_distance($key, $location, $distance)
- {
- return new GeoDistance($key, $location, $distance);
- }
- /**
- * exists query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
- *
- * @param string $field
- *
- * @return Exists
- */
- public function exists($field)
- {
- return new Exists($field);
- }
- /**
- * type query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-type-query.html
- *
- * @param string $type Type name
- *
- * @return Type
- */
- public function type($type = null)
- {
- return new Type($type);
- }
- /**
- * type query.
- *
- * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-percolate-query.html
- *
- * @return Percolate
- */
- public function percolate()
- {
- return new Percolate();
- }
- }
|