summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/lib/Elastica/QueryBuilder
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/QueryBuilder')
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL.php22
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Aggregation.php470
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Filter.php480
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Query.php586
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Suggest.php83
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Facade.php64
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version.php101
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version090.php97
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version100.php123
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version110.php131
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version120.php137
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version130.php142
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version140.php145
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/QueryBuilder/Version/Version150.php14
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
+}