diff options
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/QueryBuilder')
14 files changed, 2595 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL.php new file mode 100644 index 00000000..976de5f4 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL.php @@ -0,0 +1,22 @@ +<?php +namespace Elastica\QueryBuilder; + +/** + * DSL Interface. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +interface DSL +{ + const TYPE_QUERY = 'query'; + const TYPE_FILTER = 'filter'; + const TYPE_AGGREGATION = 'aggregation'; + const TYPE_SUGGEST = 'suggest'; + + /** + * must return type for QueryBuilder usage. + * + * @return string + */ + public function getType(); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Aggregation.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Aggregation.php new file mode 100644 index 00000000..8393b8aa --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Aggregation.php @@ -0,0 +1,470 @@ +<?php +namespace Elastica\QueryBuilder\DSL; + +use Elastica\Aggregation\Avg; +use Elastica\Aggregation\Cardinality; +use Elastica\Aggregation\DateHistogram; +use Elastica\Aggregation\DateRange; +use Elastica\Aggregation\ExtendedStats; +use Elastica\Aggregation\Filter as FilterAggregation; +use Elastica\Aggregation\Filters; +use Elastica\Aggregation\GeoDistance; +use Elastica\Aggregation\GeohashGrid; +use Elastica\Aggregation\GlobalAggregation; +use Elastica\Aggregation\Histogram; +use Elastica\Aggregation\IpRange; +use Elastica\Aggregation\Max; +use Elastica\Aggregation\Min; +use Elastica\Aggregation\Missing; +use Elastica\Aggregation\Nested; +use Elastica\Aggregation\Percentiles; +use Elastica\Aggregation\Range; +use Elastica\Aggregation\ReverseNested; +use Elastica\Aggregation\ScriptedMetric; +use Elastica\Aggregation\SignificantTerms; +use Elastica\Aggregation\Stats; +use Elastica\Aggregation\Sum; +use Elastica\Aggregation\Terms; +use Elastica\Aggregation\TopHits; +use Elastica\Aggregation\ValueCount; +use Elastica\Exception\NotImplementedException; +use Elastica\Filter\AbstractFilter; +use Elastica\QueryBuilder\DSL; + +/** + * elasticsearch aggregation DSL. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html + */ +class Aggregation implements DSL +{ + /** + * must return type for QueryBuilder usage. + * + * @return string + */ + public function getType() + { + return DSL::TYPE_AGGREGATION; + } + + /** + * min aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-min-aggregation.html + * + * @param string $name + * + * @return Min + */ + public function min($name) + { + return new Min($name); + } + + /** + * max aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-max-aggregation.html + * + * @param string $name + * + * @return Max + */ + public function max($name) + { + return new Max($name); + } + + /** + * sum aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html + * + * @param string $name + * + * @return Sum + */ + public function sum($name) + { + return new Sum($name); + } + + /** + * avg aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-avg-aggregation.html + * + * @param string $name + * + * @return Avg + */ + public function avg($name) + { + return new Avg($name); + } + + /** + * stats aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-stats-aggregation.html + * + * @param string $name + * + * @return Stats + */ + public function stats($name) + { + return new Stats($name); + } + + /** + * extended stats aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-extendedstats-aggregation.html + * + * @param string $name + * + * @return ExtendedStats + */ + public function extended_stats($name) + { + return new ExtendedStats($name); + } + + /** + * value count aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html + * + * @param string $name + * @param string $field + * + * @return ValueCount + */ + public function value_count($name, $field) + { + return new ValueCount($name, $field); + } + + /** + * percentiles aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-percentile-aggregation.html + * + * @param string $name the name of this aggregation + * @param string $field the field on which to perform this aggregation + * + * @return Percentiles + */ + public function percentiles($name, $field = null) + { + return new Percentiles($name, $field); + } + + /** + * percentile ranks aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-percentile-rank-aggregation.html + * + * @param string $name + */ + public function percentile_ranks($name) + { + throw new NotImplementedException(); + } + + /** + * cardinality aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html + * + * @param string $name + * + * @return Cardinality + */ + public function cardinality($name) + { + return new Cardinality($name); + } + + /** + * geo bounds aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-geobounds-aggregation.html + * + * @param string $name + */ + public function geo_bounds($name) + { + throw new NotImplementedException(); + } + + /** + * top hits aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html + * + * @param string $name + * + * @return TopHits + */ + public function top_hits($name) + { + return new TopHits($name); + } + + /** + * scripted metric aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.html + * + * @param string $name + * @param string|null $initScript + * @param string|null $mapScript + * @param string|null $combineScript + * @param string|null $reduceScript + * + * @return ScriptedMetric + */ + public function scripted_metric($name, $initScript = null, $mapScript = null, $combineScript = null, $reduceScript = null) + { + return new ScriptedMetric($name, $initScript, $mapScript, $combineScript, $reduceScript); + } + + /** + * global aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-global-aggregation.html + * + * @param string $name + * + * @return GlobalAggregation + */ + public function global_agg($name) + { + return new GlobalAggregation($name); + } + + /** + * filter aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html + * + * @param string $name + * @param AbstractFilter $filter + * + * @return FilterAggregation + */ + public function filter($name, AbstractFilter $filter = null) + { + return new FilterAggregation($name, $filter); + } + + /** + * filters aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html + * + * @param string $name + * + * @return Filters + */ + public function filters($name) + { + return new Filters($name); + } + + /** + * missing aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-missing-aggregation.html + * + * @param string $name + * @param string $field + * + * @return Missing + */ + public function missing($name, $field) + { + return new Missing($name, $field); + } + + /** + * nested aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html + * + * @param string $name + * @param string $path the nested path for this aggregation + * + * @return Nested + */ + public function nested($name, $path) + { + return new Nested($name, $path); + } + + /** + * reverse nested aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html + * + * @param string $name The name of this aggregation + * @param string $path Optional path to the nested object for this aggregation. Defaults to the root of the main document. + * + * @return ReverseNested + */ + public function reverse_nested($name, $path = null) + { + return new ReverseNested($name); + } + + /** + * children aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-children-aggregation.html + * + * @param string $name + */ + public function children($name) + { + throw new NotImplementedException(); + } + + /** + * terms aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html + * + * @param string $name + * + * @return Terms + */ + public function terms($name) + { + return new Terms($name); + } + + /** + * significant terms aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html + * + * @param string $name + * + * @return SignificantTerms + */ + public function significant_terms($name) + { + return new SignificantTerms($name); + } + + /** + * range aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-range-aggregation.html + * + * @param string $name + * + * @return Range + */ + public function range($name) + { + return new Range($name); + } + + /** + * date range aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-daterange-aggregation.html + * + * @param string $name + * + * @return DateRange + */ + public function date_range($name) + { + return new DateRange($name); + } + + /** + * ipv4 range aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-iprange-aggregation.html + * + * @param string $name + * @param string $field + * + * @return IpRange + */ + public function ipv4_range($name, $field) + { + return new IpRange($name, $field); + } + + /** + * histogram aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-histogram-aggregation.html + * + * @param string $name the name of this aggregation + * @param string $field the name of the field on which to perform the aggregation + * @param int $interval the interval by which documents will be bucketed + * + * @return Histogram + */ + public function histogram($name, $field, $interval) + { + return new Histogram($name, $field, $interval); + } + + /** + * date histogram aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html + * + * @param string $name the name of this aggregation + * @param string $field the name of the field on which to perform the aggregation + * @param int $interval the interval by which documents will be bucketed + * + * @return DateHistogram + */ + public function date_histogram($name, $field, $interval) + { + return new DateHistogram($name, $field, $interval); + } + + /** + * geo distance aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geodistance-aggregation.html + * + * @param string $name the name if this aggregation + * @param string $field the field on which to perform this aggregation + * @param string|array $origin the point from which distances will be calculated + * + * @return GeoDistance + */ + public function geo_distance($name, $field, $origin) + { + return new GeoDistance($name, $field, $origin); + } + + /** + * geohash grid aggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geohashgrid-aggregation.html + * + * @param string $name the name of this aggregation + * @param string $field the field on which to perform this aggregation + * + * @return GeohashGrid + */ + public function geohash_grid($name, $field) + { + return new GeohashGrid($name, $field); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Filter.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Filter.php new file mode 100644 index 00000000..1c41239f --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Filter.php @@ -0,0 +1,480 @@ +<?php +namespace Elastica\QueryBuilder\DSL; + +use Elastica\Filter\AbstractFilter; +use Elastica\Filter\BoolAnd; +use Elastica\Filter\BoolFilter; +use Elastica\Filter\BoolNot; +use Elastica\Filter\BoolOr; +use Elastica\Filter\Exists; +use Elastica\Filter\GeoBoundingBox; +use Elastica\Filter\GeoDistance; +use Elastica\Filter\GeoDistanceRange; +use Elastica\Filter\GeohashCell; +use Elastica\Filter\GeoPolygon; +use Elastica\Filter\GeoShapePreIndexed; +use Elastica\Filter\GeoShapeProvided; +use Elastica\Filter\HasChild; +use Elastica\Filter\HasParent; +use Elastica\Filter\Ids; +use Elastica\Filter\Indices; +use Elastica\Filter\Limit; +use Elastica\Filter\MatchAll; +use Elastica\Filter\Missing; +use Elastica\Filter\Nested; +use Elastica\Filter\NumericRange; +use Elastica\Filter\Prefix; +use Elastica\Filter\Query as QueryFilter; +use Elastica\Filter\Range; +use Elastica\Filter\Regexp; +use Elastica\Filter\Script; +use Elastica\Filter\Term; +use Elastica\Filter\Terms; +use Elastica\Filter\Type; +use Elastica\Query\AbstractQuery; +use Elastica\QueryBuilder\DSL; + +/** + * elasticsearch filter DSL. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filters.html + */ +class Filter implements DSL +{ + /** + * must return type for QueryBuilder usage. + * + * @return string + */ + public function getType() + { + return self::TYPE_FILTER; + } + + /** + * and filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-and-filter.html + * + * @param AbstractFilter[] $filters + * + * @return BoolAnd + */ + public function bool_and(array $filters = array()) + { + return new BoolAnd($filters); + } + + /** + * bool filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html + * + * @return \Elastica\Filter\Bool + */ + public function bool() + { + return new BoolFilter(); + } + + /** + * exists filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-filter.html + * + * @param string $field + * + * @return Exists + */ + public function exists($field) + { + return new Exists($field); + } + + /** + * geo bounding box filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-bounding-box-filter.html + * + * @param string $key + * @param array $coordinates + * + * @return GeoBoundingBox + */ + public function geo_bounding_box($key, array $coordinates) + { + return new GeoBoundingBox($key, $coordinates); + } + + /** + * geo distance filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-filter.html + * + * @param string $key Key + * @param array|string $location Location as array or geohash: array('lat' => 48.86, 'lon' => 2.35) OR 'drm3btev3e86' + * @param string $distance Distance + * + * @return GeoDistance + */ + public function geo_distance($key, $location, $distance) + { + return new GeoDistance($key, $location, $distance); + } + + /** + * geo distance rangefilter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-range-filter.html + * + * @param string $key + * @param array|string $location + * @param array $ranges + * + * @return GeoDistanceRange + */ + public function geo_distance_range($key, $location, array $ranges = array()) + { + return new GeoDistanceRange($key, $location, $ranges); + } + + /** + * geo polygon filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-polygon-filter.html + * + * @param string $key Key + * @param array $points Points making up polygon + * + * @return GeoPolygon + */ + public function geo_polygon($key, array $points) + { + return new GeoPolygon($key, $points); + } + + /** + * provided geo shape filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-filter.html#_provided_shape_definition + * + * @param string $path + * @param array $coordinates + * @param string $shapeType + * + * @return GeoShapeProvided + */ + public function geo_shape_provided($path, array $coordinates, $shapeType = GeoShapeProvided::TYPE_ENVELOPE) + { + return new GeoShapeProvided($path, $coordinates, $shapeType); + } + + /** + * pre indexed geo shape filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-filter.html#_pre_indexed_shape + * + * @param string $path The path/field of the shape searched + * @param string $indexedId Id of the pre-indexed shape + * @param string $indexedType Type of the pre-indexed shape + * @param string $indexedIndex Index of the pre-indexed shape + * @param string $indexedPath Path of the pre-indexed shape + * + * @return GeoShapePreIndexed + */ + public function geo_shape_pre_indexed($path, $indexedId, $indexedType, $indexedIndex, $indexedPath) + { + return new GeoShapePreIndexed($path, $indexedId, $indexedType, $indexedIndex, $indexedPath); + } + + /** + * geohash cell filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geohash-cell-filter.html + * + * @param string $key The field on which to filter + * @param array|string $location Location as coordinates array or geohash string ['lat' => 40.3, 'lon' => 45.2] + * @param int|string $precision length of geohash prefix or distance (3, or "50m") + * @param bool $neighbors If true, filters cells next to the given cell. + * + * @return GeohashCell + */ + public function geohash_cell($key, $location, $precision = -1, $neighbors = false) + { + return new GeohashCell($key, $location, $precision, $neighbors); + } + + /** + * has child filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-filter.html + * + * @param AbstractQuery|AbstractFilter $query + * @param string $type + * + * @return HasChild + */ + public function has_child($query, $type = null) + { + return new HasChild($query, $type); + } + + /** + * has parent filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-filter.html + * + * @param AbstractQuery|AbstractFilter $query + * @param string $type + * + * @return HasParent + */ + public function has_parent($query, $type) + { + return new HasParent($query, $type); + } + + /** + * ids filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-filter.html + * + * @param string|\Elastica\Type $type + * @param array $ids + * + * @return Ids + */ + public function ids($type = null, array $ids = array()) + { + return new Ids($type, $ids); + } + + /** + * indices filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-indices-filter.html + * + * @param AbstractFilter $filter filter which will be applied to docs in the specified indices + * @param string[] $indices + * + * @return Indices + */ + public function indices(AbstractFilter $filter, array $indices) + { + return new Indices($filter, $indices); + } + + /** + * limit filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-limit-filter.html + * + * @param int $limit Limit + * + * @return Limit + */ + public function limit($limit) + { + return new Limit($limit); + } + + /** + * match all filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-filter.html + * + * @return MatchAll + */ + public function match_all() + { + return new MatchAll(); + } + + /** + * missing filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-missing-filter.html + * + * @param string $field + * + * @return Missing + */ + public function missing($field = '') + { + return new Missing($field); + } + + /** + * nested filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-filter.html + * + * @return Nested + */ + public function nested() + { + return new Nested(); + } + + /** + * not filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-not-filter.html + * + * @param AbstractFilter $filter + * + * @return BoolNot + */ + public function bool_not(AbstractFilter $filter) + { + return new BoolNot($filter); + } + + /** + * numeric range filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-numeric-range-filter.html + * + * @param string $fieldName Field name + * @param array $args Field arguments + * + * @return NumericRange + */ + public function numeric_range($fieldName = '', array $args = array()) + { + return new NumericRange($fieldName, $args); + } + + /** + * or filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-or-filter.html + * + * @param AbstractFilter[] $filters + * + * @return BoolOr + */ + public function bool_or(array $filters = array()) + { + return new BoolOr($filters); + } + + /** + * prefix filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-filter.html + * + * @param string $field + * @param string $prefix + * + * @return Prefix + */ + public function prefix($field = '', $prefix = '') + { + return new Prefix($field, $prefix); + } + + /** + * query filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-filter.html + * + * @param array|AbstractQuery $query + * + * @return QueryFilter + */ + public function query($query = null) + { + return new QueryFilter($query); + } + + /** + * range filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-filter.html + * + * @param string $fieldName + * @param array $args + * + * @return Range + */ + public function range($fieldName = '', array $args = array()) + { + return new Range($fieldName, $args); + } + + /** + * regexp filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-filter.html + * + * @param string $field Field name + * @param string $regexp Regular expression + * @param array $options Regular expression options + * + * @return Regexp + */ + public function regexp($field = '', $regexp = '', $options = array()) + { + return new Regexp($field, $regexp, $options); + } + + /** + * script filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-filter.html + * + * @param array|string|\Elastica\Script $script + * + * @return Script + */ + public function script($script = null) + { + return new Script($script); + } + + /** + * term filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html + * + * @param array $term + * + * @return Term + */ + public function term(array $term = array()) + { + return new Term($term); + } + + /** + * terms filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html + * + * @param string $key + * @param array $terms + * + * @return Terms + */ + public function terms($key = '', array $terms = array()) + { + return new Terms($key, $terms); + } + + /** + * type filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-type-filter.html + * + * @param string $type + * + * @return Type + */ + public function type($type = null) + { + return new Type($type); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Query.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Query.php new file mode 100644 index 00000000..7d1aca68 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Query.php @@ -0,0 +1,586 @@ +<?php +namespace Elastica\QueryBuilder\DSL; + +use Elastica\Exception\NotImplementedException; +use Elastica\Filter\AbstractFilter; +use Elastica\Query\AbstractQuery; +use Elastica\Query\BoolQuery; +use Elastica\Query\Boosting; +use Elastica\Query\Common; +use Elastica\Query\ConstantScore; +use Elastica\Query\DisMax; +use Elastica\Query\Filtered; +use Elastica\Query\FunctionScore; +use Elastica\Query\Fuzzy; +use Elastica\Query\FuzzyLikeThis; +use Elastica\Query\HasChild; +use Elastica\Query\HasParent; +use Elastica\Query\Ids; +use Elastica\Query\Match; +use Elastica\Query\MatchAll; +use Elastica\Query\MoreLikeThis; +use Elastica\Query\MultiMatch; +use Elastica\Query\Nested; +use Elastica\Query\Prefix; +use Elastica\Query\QueryString; +use Elastica\Query\Range; +use Elastica\Query\Regexp; +use Elastica\Query\SimpleQueryString; +use Elastica\Query\Term; +use Elastica\Query\Terms; +use Elastica\Query\TopChildren; +use Elastica\Query\Wildcard; +use Elastica\QueryBuilder\DSL; + +/** + * elasticsearch query DSL. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + * + * @link http://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. + * + * @link http://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. + * + * @link http://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. + * + * @link http://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. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html + * + * @return Boosting + */ + public function boosting() + { + return new Boosting(); + } + + /** + * common terms query. + * + * @link http://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); + } + + /** + * custom filters score query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-custom-filters-score-query.html + */ + public function custom_filters_score() + { + throw new NotImplementedException(); + } + + /** + * custom score query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-custom-score-query.html + */ + public function custom_score() + { + throw new NotImplementedException(); + } + + /** + * custom boost factor query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-custom-boost-factor-query.html + */ + public function custom_boost_factor() + { + throw new NotImplementedException(); + } + + /** + * constant score query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-constant-score-query.html + * + * @param null|\Elastica\Filter\AbstractFilter|array $filter + * + * @return ConstantScore + */ + public function constant_score($filter = null) + { + return new ConstantScore($filter); + } + + /** + * dis max query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html + * + * @return DisMax + */ + public function dis_max() + { + return new DisMax(); + } + + /** + * field query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-field-query.html + */ + public function field() + { + throw new NotImplementedException(); + } + + /** + * filtered query. + * + * @param AbstractFilter $filter + * @param AbstractQuery $query + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html + * + * @return Filtered + */ + public function filtered(AbstractQuery $query = null, AbstractFilter $filter = null) + { + return new Filtered($query, $filter); + } + + /** + * fuzzy like this query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-flt-query.html + * + * @return FuzzyLikeThis + */ + public function fuzzy_like_this() + { + return new FuzzyLikeThis(); + } + + /** + * fuzzy like this field query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-flt-field-query.html + */ + public function fuzzy_like_this_field() + { + throw new NotImplementedException(); + } + + /** + * function score query. + * + * @link http://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. + * + * @link http://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. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-query.html + */ + public function geo_shape() + { + throw new NotImplementedException(); + } + + /** + * has child query. + * + * @link http://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. + * + * @link http://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. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html + * + * @param array|string|\Elastica\Type $type + * @param array $ids + * + * @return Ids + */ + public function ids($type = null, array $ids = array()) + { + return new Ids($type, $ids); + } + + /** + * indices query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-indices-query.html + */ + public function indices() + { + throw new NotImplementedException(); + } + + /** + * match all query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html + * + * @return MatchAll + */ + public function match_all() + { + return new MatchAll(); + } + + /** + * more like this query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html + * + * @return MoreLikeThis + */ + public function more_like_this() + { + return new MoreLikeThis(); + } + + /** + * more_like_this_field query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-mlt-field-query.html + * @deprecated More Like This Field query is deprecated as of ES 1.4 and will be removed in ES 2.0 + */ + public function more_like_this_field() + { + throw new NotImplementedException(); + } + + /** + * nested query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html + * + * @return Nested + */ + public function nested() + { + return new Nested(); + } + + /** + * prefix query. + * + * @link http://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 = array()) + { + return new Prefix($prefix); + } + + /** + * query string query. + * + * @link http://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. + * + * @link http://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 = array()) + { + return new SimpleQueryString($query, $fields); + } + + /** + * range query. + * + * @link http://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 = array()) + { + return new Range($fieldName, $args); + } + + /** + * regexp query. + * + * @param string $key + * @param string $value + * @param float $boost + * + * @return Regexp + * + * @link http://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. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-first-query.html + */ + public function span_first() + { + throw new NotImplementedException(); + } + + /** + * span multi term query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-multi-term-query.html + */ + public function span_multi_term() + { + throw new NotImplementedException(); + } + + /** + * span near query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html + */ + public function span_near() + { + throw new NotImplementedException(); + } + + /** + * span not query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-not-query.html + */ + public function span_not() + { + throw new NotImplementedException(); + } + + /** + * span or query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-or-query.html + */ + public function span_or() + { + throw new NotImplementedException(); + } + + /** + * span term query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html + */ + public function span_term() + { + throw new NotImplementedException(); + } + + /** + * term query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html + * + * @param array $term + * + * @return Term + */ + public function term(array $term = array()) + { + return new Term($term); + } + + /** + * terms query. + * + * @link http://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 = array()) + { + return new Terms($key, $terms); + } + + /** + * top children query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-top-children-query.html + * + * @param string|AbstractQuery|\Elastica\Query $query + * @param string $type + * + * @return TopChildren + */ + public function top_children($query, $type = null) + { + return new TopChildren($query, $type); + } + + /** + * wildcard query. + * + * @link http://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); + } + + /** + * text query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-text-query.html + */ + public function text() + { + throw new NotImplementedException(); + } + + /** + * minimum should match query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html + */ + public function minimum_should_match() + { + throw new NotImplementedException(); + } + + /** + * template query. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-template-query.html + */ + public function template() + { + throw new NotImplementedException(); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Suggest.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Suggest.php new file mode 100644 index 00000000..9a54ccde --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Suggest.php @@ -0,0 +1,83 @@ +<?php +namespace Elastica\QueryBuilder\DSL; + +use Elastica\Exception\NotImplementedException; +use Elastica\QueryBuilder\DSL; +use Elastica\Suggest\Completion; +use Elastica\Suggest\Phrase; +use Elastica\Suggest\Term; + +/** + * elasticsearch suggesters DSL. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html + */ +class Suggest implements DSL +{ + /** + * must return type for QueryBuilder usage. + * + * @return string + */ + public function getType() + { + return self::TYPE_SUGGEST; + } + + /** + * term suggester. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html + * + * @param $name + * @param $field + * + * @return Term + */ + public function term($name, $field) + { + return new Term($name, $field); + } + + /** + * phrase suggester. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html + * + * @param $name + * @param $field + * + * @return Phrase + */ + public function phrase($name, $field) + { + return new Phrase($name, $field); + } + + /** + * completion suggester. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html + * + * @param string $name + * @param string $field + * + * @return Completion + */ + public function completion($name, $field) + { + return new Completion($name, $field); + } + + /** + * context suggester. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/suggester-context.html + */ + public function context() + { + throw new NotImplementedException(); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Facade.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Facade.php new file mode 100644 index 00000000..b0f6da82 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Facade.php @@ -0,0 +1,64 @@ +<?php +namespace Elastica\QueryBuilder; + +use Elastica\Exception\QueryBuilderException; + +/** + * Facade for a specific DSL object. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + **/ +class Facade +{ + /** + * @var DSL + */ + private $_dsl; + + /** + * @var Version + */ + private $_version; + + /** + * Constructor. + * + * @param DSL $dsl + * @param Version $version + */ + public function __construct(DSL $dsl, Version $version) + { + $this->_dsl = $dsl; + $this->_version = $version; + } + + /** + * Executes DSL methods. + * + * @param string $name + * @param array $arguments + * + * @throws QueryBuilderException + * + * @return mixed + */ + public function __call($name, array $arguments) + { + // defined check + if (false === method_exists($this->_dsl, $name)) { + throw new QueryBuilderException( + 'undefined '.$this->_dsl->getType().' "'.$name.'"' + ); + } + + // version support check + if (false === $this->_version->supports($name, $this->_dsl->getType())) { + $reflection = new \ReflectionClass($this->_version); + throw new QueryBuilderException( + $this->_dsl->getType().' "'.$name.'" in '.$reflection->getShortName().' not supported' + ); + } + + return call_user_func_array(array($this->_dsl, $name), $arguments); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version.php new file mode 100644 index 00000000..5230600d --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version.php @@ -0,0 +1,101 @@ +<?php +namespace Elastica\QueryBuilder; + +/** + * Abstract Version class. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +abstract class Version +{ + /** + * supported query methods. + * + * @var string[] + */ + protected $queries = array(); + + /** + * supported filter methods. + * + * @var string[] + */ + protected $filters = array(); + + /** + * supported aggregation methods. + * + * @var string[] + */ + protected $aggregations = array(); + + /** + * supported $suggester methods. + * + * @var string[] + */ + protected $suggesters = array(); + + /** + * returns true if $name is supported, false otherwise. + * + * @param string $name + * @param $type + * + * @return bool + */ + public function supports($name, $type) + { + switch ($type) { + case DSL::TYPE_QUERY: + $supports = in_array($name, $this->queries); + break; + case DSL::TYPE_FILTER: + $supports = in_array($name, $this->filters); + break; + case DSL::TYPE_AGGREGATION: + $supports = in_array($name, $this->aggregations); + break; + case DSL::TYPE_SUGGEST: + $supports = in_array($name, $this->suggesters); + break; + default: + // disables version check in Facade for custom DSL objects + $supports = true; + } + + return $supports; + } + + /** + * @return string[] + */ + public function getAggregations() + { + return $this->aggregations; + } + + /** + * @return string[] + */ + public function getFilters() + { + return $this->filters; + } + + /** + * @return string[] + */ + public function getQueries() + { + return $this->queries; + } + + /** + * @return string[] + */ + public function getSuggesters() + { + return $this->suggesters; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version090.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version090.php new file mode 100644 index 00000000..193ba852 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version090.php @@ -0,0 +1,97 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +use Elastica\QueryBuilder\Version; + +/** + * elasticsearch 0.9 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/0.90/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version090 extends Version +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'custom_filters_score', + 'custom_score', + 'custom_boost_factor', + 'constant_score', + 'dis_max', + 'field', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'text', + 'minimum_should_match', + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'numeric_range', + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version100.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version100.php new file mode 100644 index 00000000..66a5c9cd --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version100.php @@ -0,0 +1,123 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +use Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.0 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.x/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version100 extends Version +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'constant_score', + 'dis_max', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'minimum_should_match', + + // removed in 1.0.0 + // 'text' + // 'field' + // 'custom_filters_score' + // 'custom_score' + // 'custom_boost_factor' + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + + // removed in 1.0.0 + // 'numeric_range' + ); + + protected $aggregations = array( + 'min', + 'max', + 'sum', + 'avg', + 'stats', + 'extended_stats', + 'value_count', + 'global_agg', // original: global + 'filter', + 'missing', + 'nested', + 'terms', + 'range', + 'date_range', + 'ipv4_range', + 'histogram', + 'date_histogram', + 'geo_distance', + 'geohash_grid', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version110.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version110.php new file mode 100644 index 00000000..b6465e76 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version110.php @@ -0,0 +1,131 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +use Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.1 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.x/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version110 extends Version +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'constant_score', + 'dis_max', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'minimum_should_match', + + // removed in 1.0.0 + // 'text' + // 'field' + // 'custom_filters_score' + // 'custom_score' + // 'custom_boost_factor' + + // new in 1.1.0 + 'template', + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + + // removed in 1.0.0 + // 'numeric_range' + ); + + protected $aggregations = array( + 'min', + 'max', + 'sum', + 'avg', + 'stats', + 'extended_stats', + 'value_count', + 'global_agg', // original: global + 'filter', + 'missing', + 'nested', + 'terms', + 'range', + 'date_range', + 'ipv4_range', + 'histogram', + 'date_histogram', + 'geo_distance', + 'geohash_grid', + + // new in 1.1.0 + 'percentiles', + 'cardinality', + 'significant_terms', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version120.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version120.php new file mode 100644 index 00000000..f74e3bdc --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version120.php @@ -0,0 +1,137 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +use Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.2 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.x/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version120 extends Version +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'constant_score', + 'dis_max', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'minimum_should_match', + + // removed in 1.0.0 + // 'text' + // 'field' + // 'custom_filters_score' + // 'custom_score' + // 'custom_boost_factor' + + // new in 1.1.0 + 'template', + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + + // removed in 1.0.0 + // 'numeric_range' + ); + + protected $aggregations = array( + 'min', + 'max', + 'sum', + 'avg', + 'stats', + 'extended_stats', + 'value_count', + 'global_agg', // original: global + 'filter', + 'missing', + 'nested', + 'terms', + 'range', + 'date_range', + 'ipv4_range', + 'histogram', + 'date_histogram', + 'geo_distance', + 'geohash_grid', + + // new in 1.1.0 + 'percentiles', + 'cardinality', + 'significant_terms', + + // new in 1.2.0 + 'reverse_nested', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + + // new in 1.2.0 + 'context', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version130.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version130.php new file mode 100644 index 00000000..ad52e3e7 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version130.php @@ -0,0 +1,142 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +use Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.3 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.3/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version130 extends Version +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'constant_score', + 'dis_max', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'minimum_should_match', + + // removed in 1.0.0 + // 'text' + // 'field' + // 'custom_filters_score' + // 'custom_score' + // 'custom_boost_factor' + + // new in 1.1.0 + 'template', + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + + // removed in 1.0.0 + // 'numeric_range' + ); + + protected $aggregations = array( + 'min', + 'max', + 'sum', + 'avg', + 'stats', + 'extended_stats', + 'value_count', + 'global_agg', // original: global + 'filter', + 'missing', + 'nested', + 'terms', + 'range', + 'date_range', + 'ipv4_range', + 'histogram', + 'date_histogram', + 'geo_distance', + 'geohash_grid', + + // new in 1.1.0 + 'percentiles', + 'cardinality', + 'significant_terms', + + // new in 1.2.0 + 'reverse_nested', + + // new in 1.3.0 + 'percentile_ranks', + 'geo_bounds', + 'top_hits', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + + // new in 1.2.0 + 'context', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version140.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version140.php new file mode 100644 index 00000000..7b5d73e3 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version140.php @@ -0,0 +1,145 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.4 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.4/index.html + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class Version140 extends Version130 +{ + protected $queries = array( + 'match', + 'multi_match', + 'bool', + 'boosting', + 'common_terms', + 'constant_score', + 'dis_max', + 'filtered', + 'fuzzy_like_this', + 'fuzzy_like_this_field', + 'function_score', + 'fuzzy', + 'geo_shape', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'match_all', + 'more_like_this', + 'more_like_this_field', + 'nested', + 'prefix', + 'query_string', + 'simple_query_string', + 'range', + 'regexp', + 'span_first', + 'span_multi_term', + 'span_near', + 'span_not', + 'span_or', + 'span_term', + 'term', + 'terms', + 'top_children', + 'wildcard', + 'minimum_should_match', + + // removed in 1.0.0 + // 'text' + // 'field' + // 'custom_filters_score' + // 'custom_score' + // 'custom_boost_factor' + + // new in 1.1.0 + 'template', + ); + + protected $filters = array( + 'bool_and', // original: bool + 'bool', + 'exists', + 'geo_bounding_box', + 'geo_distance', + 'geo_distance_range', + 'geo_polygon', + 'geo_shape_provided', // original: geo_shape + 'geo_shape_pre_indexed', // original: geo_shape + 'geohash_cell', + 'has_child', + 'has_parent', + 'ids', + 'indices', + 'limit', + 'match_all', + 'missing', + 'nested', + 'bool_not', // original: not + 'bool_or', // original: or + 'prefix', + 'query', + 'range', + 'regexp', + 'script', + 'term', + 'terms', + 'type', + + // removed in 1.0.0 + // 'numeric_range' + ); + + protected $aggregations = array( + 'min', + 'max', + 'sum', + 'avg', + 'stats', + 'extended_stats', + 'value_count', + 'global_agg', // original: global + 'filter', + 'missing', + 'nested', + 'terms', + 'range', + 'date_range', + 'ipv4_range', + 'histogram', + 'date_histogram', + 'geo_distance', + 'geohash_grid', + + // new in 1.1.0 + 'percentiles', + 'cardinality', + 'significant_terms', + + // new in 1.2.0 + 'reverse_nested', + + // new in 1.3.0 + 'percentile_ranks', + 'geo_bounds', + 'top_hits', + + // new in 1.4.0 + 'scripted_metric', + 'filters', + 'children', + ); + + protected $suggesters = array( + 'term', + 'phrase', + 'completion', + + // new in 1.2.0 + 'context', + ); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version150.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version150.php new file mode 100644 index 00000000..fcb5e087 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version150.php @@ -0,0 +1,14 @@ +<?php +namespace Elastica\QueryBuilder\Version; + +/** + * elasticsearch 1.5 DSL. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/1.5/index.html + * + * @author Igor Denisenko <im.denisenko@yahoo.com> + */ +class Version150 extends Version140 +{ + // nothing was added nor removed +} |