diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2015-12-20 09:00:55 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2015-12-20 09:00:55 +0100 |
commit | a2190ac74dd4d7080b12bab90e552d7aa81209ef (patch) | |
tree | 8b31f38de9882d18df54cf8d9e0de74167a094eb /vendor/ruflin/elastica/lib | |
parent | 15e69f7b20b6596b9148030acce5b59993b95a45 (diff) | |
parent | 257401d8b2cf661adf36c84b0e3fd1cf85e33c22 (diff) |
Merge branch 'mw-1.26'
Diffstat (limited to 'vendor/ruflin/elastica/lib')
215 files changed, 9434 insertions, 4039 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/AbstractUpdateAction.php b/vendor/ruflin/elastica/lib/Elastica/AbstractUpdateAction.php index 883284ae..468087af 100644 --- a/vendor/ruflin/elastica/lib/Elastica/AbstractUpdateAction.php +++ b/vendor/ruflin/elastica/lib/Elastica/AbstractUpdateAction.php @@ -1,13 +1,10 @@ <?php - namespace Elastica; /** * Base class for things that can be sent to the update api (Document and * Script). * - * @category Xodoa - * @package Elastica * @author Nik Everett <nik9000@gmail.com> */ class AbstractUpdateAction extends Param @@ -20,8 +17,9 @@ class AbstractUpdateAction extends Param /** * Sets the id of the document. * - * @param string $id - * @return \Elastica\Document + * @param string $id + * + * @return $this */ public function setId($id) { @@ -29,7 +27,7 @@ class AbstractUpdateAction extends Param } /** - * Returns document id + * Returns document id. * * @return string|int Document id */ @@ -47,10 +45,11 @@ class AbstractUpdateAction extends Param } /** - * Sets lifetime of document + * Sets lifetime of document. * - * @param string $ttl - * @return \Elastica\Document + * @param string $ttl + * + * @return $this */ public function setTtl($ttl) { @@ -74,10 +73,11 @@ class AbstractUpdateAction extends Param } /** - * Sets the document type name + * Sets the document type name. + * + * @param string $type Type name * - * @param string $type Type name - * @return \Elastica\Document Current object + * @return $this */ public function setType($type) { @@ -85,14 +85,16 @@ class AbstractUpdateAction extends Param $this->setIndex($type->getIndex()); $type = $type->getName(); } + return $this->setParam('_type', $type); } /** - * Return document type name + * Return document type name. * - * @return string Document type name * @throws \Elastica\Exception\InvalidException + * + * @return string Document type name */ public function getType() { @@ -100,24 +102,27 @@ class AbstractUpdateAction extends Param } /** - * Sets the document index name + * Sets the document index name. + * + * @param string $index Index name * - * @param string $index Index name - * @return \Elastica\Document Current object + * @return $this */ public function setIndex($index) { if ($index instanceof Index) { $index = $index->getName(); } + return $this->setParam('_index', $index); } /** - * Get the document index name + * Get the document index name. * - * @return string Index name * @throws \Elastica\Exception\InvalidException + * + * @return string Index name */ public function getIndex() { @@ -125,11 +130,13 @@ class AbstractUpdateAction extends Param } /** - * Sets the version of a document for use with optimistic concurrency control + * Sets the version of a document for use with optimistic concurrency control. * - * @param int $version Document version - * @return \Elastica\Document Current object - * @link http://www.elasticsearch.org/blog/2011/02/08/versioning.html + * @param int $version Document version + * + * @return $this + * + * @link https://www.elastic.co/blog/versioning */ public function setVersion($version) { @@ -137,7 +144,7 @@ class AbstractUpdateAction extends Param } /** - * Returns document version + * Returns document version. * * @return string|int Document version */ @@ -156,11 +163,11 @@ class AbstractUpdateAction extends Param /** * Sets the version_type of a document - * Default in ES is internal, but you can set to external to use custom versioning + * Default in ES is internal, but you can set to external to use custom versioning. + * + * @param int $versionType Document version type * - * @param int $versionType Document version type - * @return \Elastica\Document Current object - * @link http://www.elasticsearch.org/guide/reference/api/index_.html + * @return $this */ public function setVersionType($versionType) { @@ -168,7 +175,7 @@ class AbstractUpdateAction extends Param } /** - * Returns document version type + * Returns document version type. * * @return string|int Document version type */ @@ -186,11 +193,13 @@ class AbstractUpdateAction extends Param } /** - * Sets parent document id + * Sets parent document id. + * + * @param string|int $parent Parent document id + * + * @return $this * - * @param string|int $parent Parent document id - * @return \Elastica\Document Current object - * @link http://www.elasticsearch.org/guide/reference/mapping/parent-field.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-parent-field.html */ public function setParent($parent) { @@ -198,7 +207,7 @@ class AbstractUpdateAction extends Param } /** - * Returns the parent document id + * Returns the parent document id. * * @return string|int Parent document id */ @@ -216,10 +225,11 @@ class AbstractUpdateAction extends Param } /** - * Set operation type + * Set operation type. * - * @param string $opType Only accept create - * @return \Elastica\Document Current object + * @param string $opType Only accept create + * + * @return $this */ public function setOpType($opType) { @@ -227,7 +237,8 @@ class AbstractUpdateAction extends Param } /** - * Get operation type + * Get operation type. + * * @return string */ public function getOpType() @@ -244,10 +255,11 @@ class AbstractUpdateAction extends Param } /** - * Set percolate query param + * Set percolate query param. * - * @param string $value percolator filter - * @return \Elastica\Document + * @param string $value percolator filter + * + * @return $this */ public function setPercolate($value = '*') { @@ -255,7 +267,7 @@ class AbstractUpdateAction extends Param } /** - * Get percolate parameter + * Get percolate parameter. * * @return string */ @@ -273,10 +285,11 @@ class AbstractUpdateAction extends Param } /** - * Set routing query param + * Set routing query param. * - * @param string $value routing - * @return \Elastica\Document + * @param string $value routing + * + * @return $this */ public function setRouting($value) { @@ -284,7 +297,7 @@ class AbstractUpdateAction extends Param } /** - * Get routing parameter + * Get routing parameter. * * @return string */ @@ -303,18 +316,20 @@ class AbstractUpdateAction extends Param /** * @param array|string $fields - * @return \Elastica\Document + * + * @return $this */ public function setFields($fields) { if (is_array($fields)) { $fields = implode(',', $fields); } + return $this->setParam('_fields', (string) $fields); } /** - * @return \Elastica\Document + * @return $this */ public function setFieldsSource() { @@ -339,7 +354,8 @@ class AbstractUpdateAction extends Param /** * @param int $num - * @return \Elastica\Document + * + * @return $this */ public function setRetryOnConflict($num) { @@ -364,7 +380,8 @@ class AbstractUpdateAction extends Param /** * @param string $timestamp - * @return \Elastica\Document + * + * @return $this */ public function setTimestamp($timestamp) { @@ -389,7 +406,8 @@ class AbstractUpdateAction extends Param /** * @param bool $refresh - * @return \Elastica\Document + * + * @return $this */ public function setRefresh($refresh = true) { @@ -414,7 +432,8 @@ class AbstractUpdateAction extends Param /** * @param string $timeout - * @return \Elastica\Document + * + * @return $this */ public function setTimeout($timeout) { @@ -439,7 +458,8 @@ class AbstractUpdateAction extends Param /** * @param string $timeout - * @return \Elastica\Document + * + * @return $this */ public function setConsistency($timeout) { @@ -464,7 +484,8 @@ class AbstractUpdateAction extends Param /** * @param string $timeout - * @return \Elastica\Document + * + * @return $this */ public function setReplication($timeout) { @@ -489,7 +510,8 @@ class AbstractUpdateAction extends Param /** * @param \Elastica\Document|array $data - * @return \Elastica\Document + * + * @return $this */ public function setUpsert($data) { @@ -516,8 +538,9 @@ class AbstractUpdateAction extends Param } /** - * @param array $fields if empty array all options will be returned, field names can be either with underscored either without, i.e. _percolate, routing - * @param bool $withUnderscore should option keys contain underscore prefix + * @param array $fields if empty array all options will be returned, field names can be either with underscored either without, i.e. _percolate, routing + * @param bool $withUnderscore should option keys contain underscore prefix + * * @return array */ public function getOptions(array $fields = array(), $withUnderscore = false) @@ -525,7 +548,7 @@ class AbstractUpdateAction extends Param if (!empty($fields)) { $data = array(); foreach ($fields as $field) { - $key = '_' . ltrim($field, '_'); + $key = '_'.ltrim($field, '_'); if ($this->hasParam($key) && '' !== (string) $this->getParam($key)) { $data[$key] = $this->getParam($key); } @@ -539,6 +562,7 @@ class AbstractUpdateAction extends Param unset($data[$key]); } } + return $data; } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractAggregation.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractAggregation.php index 5ad5b17e..4cbb6b74 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractAggregation.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractAggregation.php @@ -1,21 +1,18 @@ <?php - namespace Elastica\Aggregation; -use Elastica\Param; use Elastica\Exception\InvalidException; +use Elastica\Param; abstract class AbstractAggregation extends Param { /** - * The name of this aggregation - * @var string + * @var string The name of this aggregation */ protected $_name; /** - * Subaggregations belonging to this aggregation - * @var array + * @var array Subaggregations belonging to this aggregation */ protected $_aggs = array(); @@ -28,16 +25,22 @@ abstract class AbstractAggregation extends Param } /** - * Set the name of this aggregation + * Set the name of this aggregation. + * * @param string $name + * + * @return $this */ public function setName($name) { $this->_name = $name; + + return $this; } /** - * Retrieve the name of this aggregation + * Retrieve the name of this aggregation. + * * @return string */ public function getName() @@ -46,7 +49,8 @@ abstract class AbstractAggregation extends Param } /** - * Retrieve all subaggregations belonging to this aggregation + * Retrieve all subaggregations belonging to this aggregation. + * * @return array */ public function getAggs() @@ -55,18 +59,22 @@ abstract class AbstractAggregation extends Param } /** - * Add a sub-aggregation + * Add a sub-aggregation. + * * @param AbstractAggregation $aggregation + * * @throws \Elastica\Exception\InvalidException - * @return AbstractAggregation + * + * @return $this */ public function addAggregation(AbstractAggregation $aggregation) { - if(is_a($aggregation, 'Elastica\Aggregation\GlobalAggregation')) { + if ($aggregation instanceof GlobalAggregation) { throw new InvalidException('Global aggregators can only be placed as top level aggregators'); } $this->_aggs[$aggregation->getName()] = $aggregation->toArray(); + return $this; } @@ -78,11 +86,12 @@ abstract class AbstractAggregation extends Param $array = parent::toArray(); if (array_key_exists('global_aggregation', $array)) { // compensate for class name GlobalAggregation - $array = array('global' => new \stdClass); + $array = array('global' => new \stdClass()); } if (sizeof($this->_aggs)) { $array['aggs'] = $this->_aggs; } + return $array; } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractSimpleAggregation.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractSimpleAggregation.php index af7c1940..02a0fddb 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractSimpleAggregation.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractSimpleAggregation.php @@ -1,16 +1,16 @@ <?php - namespace Elastica\Aggregation; - use Elastica\Script; abstract class AbstractSimpleAggregation extends AbstractAggregation { /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return AbstractSimpleAggregation + * + * @return $this */ public function setField($field) { @@ -18,16 +18,20 @@ abstract class AbstractSimpleAggregation extends AbstractAggregation } /** - * Set a script for this aggregation + * Set a script for this aggregation. + * * @param string|Script $script - * @return AbstractSimpleAggregation + * + * @return $this */ public function setScript($script) { if ($script instanceof Script) { - $this->setParam('params', $script->getParams()); - $script = $script->getScript(); + $params = array_merge($this->getParams(), $script->toArray()); + + return $this->setParams($params); } + return $this->setParam('script', $script); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractTermsAggregation.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractTermsAggregation.php new file mode 100644 index 00000000..57b56964 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/AbstractTermsAggregation.php @@ -0,0 +1,97 @@ +<?php +namespace Elastica\Aggregation; + +/** + * Class AbstractTermsAggergation. + */ +abstract class AbstractTermsAggregation extends AbstractSimpleAggregation +{ + /** + * Set the minimum number of documents in which a term must appear in order to be returned in a bucket. + * + * @param int $count + * + * @return $this + */ + public function setMinimumDocumentCount($count) + { + return $this->setParam('min_doc_count', $count); + } + + /** + * Filter documents to include based on a regular expression. + * + * @param string $pattern a regular expression + * @param string $flags Java Pattern flags + * + * @return $this + */ + public function setInclude($pattern, $flags = null) + { + if (is_null($flags)) { + return $this->setParam('include', $pattern); + } + + return $this->setParam('include', array( + 'pattern' => $pattern, + 'flags' => $flags, + )); + } + + /** + * Filter documents to exclude based on a regular expression. + * + * @param string $pattern a regular expression + * @param string $flags Java Pattern flags + * + * @return $this + */ + public function setExclude($pattern, $flags = null) + { + if (is_null($flags)) { + return $this->setParam('exclude', $pattern); + } + + return $this->setParam('exclude', array( + 'pattern' => $pattern, + 'flags' => $flags, + )); + } + + /** + * Sets the amount of terms to be returned. + * + * @param int $size The amount of terms to be returned. + * + * @return $this + */ + public function setSize($size) + { + return $this->setParam('size', $size); + } + + /** + * Sets how many terms the coordinating node will request from each shard. + * + * @param int $shard_size The amount of terms to be returned. + * + * @return $this + */ + public function setShardSize($shard_size) + { + return $this->setParam('shard_size', $shard_size); + } + + /** + * Instruct Elasticsearch to use direct field data or ordinals of the field values to execute this aggregation. + * The execution hint will be ignored if it is not applicable. + * + * @param string $hint map or ordinals + * + * @return $this + */ + public function setExecutionHint($hint) + { + return $this->setParam('execution_hint', $hint); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Avg.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Avg.php index 0d601910..abc2f7a1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Avg.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Avg.php @@ -1,14 +1,11 @@ <?php - namespace Elastica\Aggregation; - /** - * Class Avg - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-avg-aggregation.html + * Class Avg. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-avg-aggregation.html */ class Avg extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Cardinality.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Cardinality.php index 061ddafa..72b2e3aa 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Cardinality.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Cardinality.php @@ -1,14 +1,38 @@ <?php - namespace Elastica\Aggregation; - /** - * Class Cardinality - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html + * Class Cardinality. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html */ class Cardinality extends AbstractSimpleAggregation { + /** + * @param int $precisionThreshold + * + * @return $this + */ + public function setPrecisionThreshold($precisionThreshold) + { + if (!is_int($precisionThreshold)) { + throw new \InvalidArgumentException('precision_threshold only supports integer values'); + } + + return $this->setParam('precision_threshold', $precisionThreshold); + } + + /** + * @param bool $rehash + * + * @return $this + */ + public function setRehash($rehash) + { + if (!is_bool($rehash)) { + throw new \InvalidArgumentException('rehash only supports boolean values'); + } -} + return $this->setParam('rehash', $rehash); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateHistogram.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateHistogram.php index 889fa429..8636f34c 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateHistogram.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateHistogram.php @@ -1,82 +1,130 @@ <?php - namespace Elastica\Aggregation; /** - * Class DateHistogram - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-datehistogram-aggregation.html + * Class DateHistogram. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html */ class DateHistogram extends Histogram { /** - * Set pre-rounding based on interval + * Set pre-rounding based on interval. + * + * @deprecated Option "pre_zone" is deprecated as of ES 1.5. Use "time_zone" instead + * * @param string $preZone - * @return DateHistogram + * + * @return $this */ public function setPreZone($preZone) { - return $this->setParam("pre_zone", $preZone); + return $this->setParam('pre_zone', $preZone); } /** - * Set post-rounding based on interval + * Set post-rounding based on interval. + * + * @deprecated Option "post_zone" is deprecated as of ES 1.5. Use "time_zone" instead + * * @param string $postZone - * @return DateHistogram + * + * @return $this */ public function setPostZone($postZone) { - return $this->setParam("post_zone", $postZone); + return $this->setParam('post_zone', $postZone); + } + + /** + * Set time_zone option. + * + * @param string + * + * @return $this + */ + public function setTimezone($timezone) + { + return $this->setParam('time_zone', $timezone); } /** - * Set pre-zone adjustment for larger time intervals (day and above) + * Set pre-zone adjustment for larger time intervals (day and above). + * + * @deprecated Option "pre_zone_adjust_large_interval" is deprecated as of ES 1.5 + * * @param string $adjust - * @return DateHistogram + * + * @return $this */ public function setPreZoneAdjustLargeInterval($adjust) { - return $this->setParam("pre_zone_adjust_large_interval", $adjust); + return $this->setParam('pre_zone_adjust_large_interval', $adjust); } /** - * Adjust for granularity of date data + * Adjust for granularity of date data. + * * @param int $factor set to 1000 if date is stored in seconds rather than milliseconds - * @return DateHistogram + * + * @return $this */ public function setFactor($factor) { - return $this->setParam("factor", $factor); + return $this->setParam('factor', $factor); } /** - * Set the offset for pre-rounding + * Set the offset for pre-rounding. + * + * @deprecated Option "pre_offset" is deprecated as of ES 1.5. Use "offset" instead + * * @param string $offset "1d", for example - * @return DateHistogram + * + * @return $this */ public function setPreOffset($offset) { - return $this->setParam("pre_offset", $offset); + return $this->setParam('pre_offset', $offset); } /** - * Set the offset for post-rounding + * Set the offset for post-rounding. + * + * @deprecated Option "post_offset" is deprecated as of ES 1.5. Use "offset" instead + * * @param string $offset "1d", for example - * @return DateHistogram + * + * @return $this */ public function setPostOffset($offset) { - return $this->setParam("post_offset", $offset); + return $this->setParam('post_offset', $offset); + } + + /** + * Set offset option. + * + * @param string + * + * @return $this + */ + public function setOffset($offset) + { + return $this->setParam('offset', $offset); } /** - * Set the format for returned bucket key_as_string values - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-daterange-aggregation.html#date-format-pattern + * Set the format for returned bucket key_as_string values. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-daterange-aggregation.html#date-format-pattern + * * @param string $format see link for formatting options - * @return DateHistogram + * + * @return $this */ public function setFormat($format) { - return $this->setParam("format", $format); + return $this->setParam('format', $format); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateRange.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateRange.php index 37aca87b..deb5881d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateRange.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/DateRange.php @@ -1,21 +1,22 @@ <?php - namespace Elastica\Aggregation; /** - * Class DateRange - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-daterange-aggregation.html + * Class DateRange. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-daterange-aggregation.html */ class DateRange extends Range { /** - * Set the formatting for the returned date values + * Set the formatting for the returned date values. + * * @param string $format see documentation for formatting options - * @return Range + * + * @return $this */ public function setFormat($format) { return $this->setParam('format', $format); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ExtendedStats.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ExtendedStats.php index 4aef8a32..2b108bd1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ExtendedStats.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ExtendedStats.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class ExtendedStats - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-extendedstats-aggregation.html + * Class ExtendedStats. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-extendedstats-aggregation.html */ class ExtendedStats extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filter.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filter.php index c2326ffe..fc83419e 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filter.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filter.php @@ -1,25 +1,38 @@ <?php - namespace Elastica\Aggregation; - use Elastica\Filter\AbstractFilter; /** - * Class Filter - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-filter-aggregation.html + * Class Filter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html */ class Filter extends AbstractAggregation { /** - * Set the filter for this aggregation + * @param string $name + * @param AbstractFilter $filter + */ + public function __construct($name, AbstractFilter $filter = null) + { + parent::__construct($name); + + if ($filter !== null) { + $this->setFilter($filter); + } + } + + /** + * Set the filter for this aggregation. + * * @param AbstractFilter $filter - * @return Filter + * + * @return $this */ public function setFilter(AbstractFilter $filter) { - return $this->setParam("filter", $filter->toArray()); + return $this->setParam('filter', $filter->toArray()); } /** @@ -28,14 +41,13 @@ class Filter extends AbstractAggregation public function toArray() { $array = array( - "filter" => $this->getParam("filter") + 'filter' => $this->getParam('filter'), ); - if($this->_aggs) - { + if ($this->_aggs) { $array['aggs'] = $this->_aggs; } return $array; } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filters.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filters.php new file mode 100644 index 00000000..e0fbf060 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Filters.php @@ -0,0 +1,59 @@ +<?php +namespace Elastica\Aggregation; + +use Elastica\Filter\AbstractFilter; + +/** + * Class Filters. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html + */ +class Filters extends AbstractAggregation +{ + /** + * Add a filter. + * + * If a name is given, it will be added as a key, otherwise considered as an anonymous filter + * + * @param AbstractFilter $filter + * @param string $name + * + * @return $this + */ + public function addFilter(AbstractFilter $filter, $name = '') + { + if (empty($name)) { + $filterArray[] = $filter->toArray(); + } else { + $filterArray[$name] = $filter->toArray(); + } + + return $this->addParam('filters', $filterArray); + } + + /** + * @return array + */ + public function toArray() + { + $array = array(); + $filters = $this->getParam('filters'); + + foreach ($filters as $filter) { + // Detect between anonymous filters and named ones + $key = key($filter); + + if (is_string($key)) { + $array['filters']['filters'][$key] = current($filter); + } else { + $array['filters']['filters'][] = current($filter); + } + } + + if ($this->_aggs) { + $array['aggs'] = $this->_aggs; + } + + return $array; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeoDistance.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeoDistance.php index 76c871ea..c50018a0 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeoDistance.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeoDistance.php @@ -1,23 +1,22 @@ <?php - namespace Elastica\Aggregation; use Elastica\Exception\InvalidException; /** - * Class GeoDistance - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-geodistance-aggregation.html + * Class GeoDistance. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geodistance-aggregation.html */ class GeoDistance extends AbstractAggregation { - const DISTANCE_TYPE_SLOPPY_ARC = "sloppy_arc"; - const DISTANCE_TYPE_ARC = "arc"; - const DISTANCE_TYPE_PLANE = "plane"; + const DISTANCE_TYPE_SLOPPY_ARC = 'sloppy_arc'; + const DISTANCE_TYPE_ARC = 'arc'; + const DISTANCE_TYPE_PLANE = 'plane'; /** - * @param string $name the name if this aggregation - * @param string $field the field on which to perform this aggregation + * @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 */ public function __construct($name, $field, $origin) @@ -27,9 +26,11 @@ class GeoDistance extends AbstractAggregation } /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return GeoDistance + * + * @return $this */ public function setField($field) { @@ -37,54 +38,67 @@ class GeoDistance extends AbstractAggregation } /** - * Set the origin point from which distances will be calculated + * Set the origin point from which distances will be calculated. + * * @param string|array $origin valid formats are array("lat" => 52.3760, "lon" => 4.894), "52.3760, 4.894", and array(4.894, 52.3760) - * @return GeoDistance + * + * @return $this */ public function setOrigin($origin) { - return $this->setParam("origin", $origin); + return $this->setParam('origin', $origin); } /** - * Add a distance range to this aggregation + * Add a distance range to this aggregation. + * * @param int $fromValue a distance - * @param int $toValue a distance - * @return GeoDistance + * @param int $toValue a distance + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function addRange($fromValue = null, $toValue = null) { if (is_null($fromValue) && is_null($toValue)) { - throw new InvalidException("Either fromValue or toValue must be set. Both cannot be null."); + throw new InvalidException('Either fromValue or toValue must be set. Both cannot be null.'); } + $range = array(); + if (!is_null($fromValue)) { $range['from'] = $fromValue; } + if (!is_null($toValue)) { $range['to'] = $toValue; } - return $this->addParam("ranges", $range); + + return $this->addParam('ranges', $range); } /** - * Set the unit of distance measure for this aggregation + * Set the unit of distance measure for this aggregation. + * * @param string $unit defaults to km - * @return GeoDistance + * + * @return $this */ public function setUnit($unit) { - return $this->setParam("unit", $unit); + return $this->setParam('unit', $unit); } /** - * Set the method by which distances will be calculated + * Set the method by which distances will be calculated. + * * @param string $distanceType see DISTANCE_TYPE_* constants for options. Defaults to sloppy_arc. - * @return GeoDistance + * + * @return $this */ public function setDistanceType($distanceType) { - return $this->setParam("distance_type", $distanceType); + return $this->setParam('distance_type', $distanceType); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeohashGrid.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeohashGrid.php index 840198c3..e7a40471 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeohashGrid.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GeohashGrid.php @@ -1,16 +1,15 @@ <?php - namespace Elastica\Aggregation; /** - * Class GeohashGrid - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-geohashgrid-aggregation.html + * Class GeohashGrid. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geohashgrid-aggregation.html */ class GeohashGrid extends AbstractAggregation { /** - * @param string $name the name of this aggregation + * @param string $name the name of this aggregation * @param string $field the field on which to perform this aggregation */ public function __construct($name, $field) @@ -20,9 +19,11 @@ class GeohashGrid extends AbstractAggregation } /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return GeohashGrid + * + * @return $this */ public function setField($field) { @@ -30,32 +31,38 @@ class GeohashGrid extends AbstractAggregation } /** - * Set the precision for this aggregation + * Set the precision for this aggregation. + * * @param int $precision an integer between 1 and 12, inclusive. Defaults to 5. - * @return GeohashGrid + * + * @return $this */ public function setPrecision($precision) { - return $this->setParam("precision", $precision); + return $this->setParam('precision', $precision); } /** - * Set the maximum number of buckets to return + * Set the maximum number of buckets to return. + * * @param int $size defaults to 10,000 - * @return GeohashGrid + * + * @return $this */ public function setSize($size) { - return $this->setParam("size", $size); + return $this->setParam('size', $size); } /** - * Set the number of results returned from each shard + * Set the number of results returned from each shard. + * * @param int $shardSize - * @return GeohashGrid + * + * @return $this */ public function setShardSize($shardSize) { - return $this->setParam("shard_size", $shardSize); + return $this->setParam('shard_size', $shardSize); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GlobalAggregation.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GlobalAggregation.php index 72b56880..523844d2 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/GlobalAggregation.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/GlobalAggregation.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class GlobalAggregation - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-global-aggregation.html + * Class GlobalAggregation. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-global-aggregation.html */ class GlobalAggregation extends AbstractAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Histogram.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Histogram.php index 26fa7c44..79a8e517 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Histogram.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Histogram.php @@ -1,18 +1,17 @@ <?php - namespace Elastica\Aggregation; /** - * Class Histogram - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-histogram-aggregation.html + * Class Histogram. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-histogram-aggregation.html */ class Histogram extends AbstractSimpleAggregation { /** - * @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 + * @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 */ public function __construct($name, $field, $interval) { @@ -21,35 +20,40 @@ class Histogram extends AbstractSimpleAggregation $this->setInterval($interval); } - /** - * Set the interval by which documents will be bucketed + * Set the interval by which documents will be bucketed. + * * @param int $interval - * @return Histogram + * + * @return $this */ public function setInterval($interval) { - return $this->setParam("interval", $interval); + return $this->setParam('interval', $interval); } /** - * Set the bucket sort order - * @param string $order "_count", "_term", or the name of a sub-aggregation or sub-aggregation response field + * Set the bucket sort order. + * + * @param string $order "_count", "_term", or the name of a sub-aggregation or sub-aggregation response field * @param string $direction "asc" or "desc" - * @return Histogram + * + * @return $this */ public function setOrder($order, $direction) { - return $this->setParam("order", array($order => $direction)); + return $this->setParam('order', array($order => $direction)); } /** - * Set the minimum number of documents which must fall into a bucket in order for the bucket to be returned + * Set the minimum number of documents which must fall into a bucket in order for the bucket to be returned. + * * @param int $count set to 0 to include empty buckets - * @return Histogram + * + * @return $this */ public function setMinimumDocumentCount($count) { - return $this->setParam("min_doc_count", $count); + return $this->setParam('min_doc_count', $count); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/IpRange.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/IpRange.php index 18e60bfb..7a4ef7c8 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/IpRange.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/IpRange.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Aggregation; - use Elastica\Exception\InvalidException; /** - * Class IpRange - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-iprange-aggregation.html + * Class IpRange. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-iprange-aggregation.html */ class IpRange extends AbstractAggregation { /** - * @param string $name the name of this aggregation + * @param string $name the name of this aggregation * @param string $field the field on which to perform this aggregation */ public function __construct($name, $field) @@ -23,9 +21,11 @@ class IpRange extends AbstractAggregation } /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return IpRange + * + * @return $this */ public function setField($field) { @@ -33,16 +33,19 @@ class IpRange extends AbstractAggregation } /** - * Add an ip range to this aggregation + * Add an ip range to this aggregation. + * * @param string $fromValue a valid ipv4 address. Low end of this range, exclusive (greater than) - * @param string $toValue a valid ipv4 address. High end of this range, exclusive (less than) - * @return IpRange + * @param string $toValue a valid ipv4 address. High end of this range, exclusive (less than) + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function addRange($fromValue = null, $toValue = null) { if (is_null($fromValue) && is_null($toValue)) { - throw new InvalidException("Either fromValue or toValue must be set. Both cannot be null."); + throw new InvalidException('Either fromValue or toValue must be set. Both cannot be null.'); } $range = array(); if (!is_null($fromValue)) { @@ -51,16 +54,19 @@ class IpRange extends AbstractAggregation if (!is_null($toValue)) { $range['to'] = $toValue; } + return $this->addParam('ranges', $range); } /** - * Add an ip range in the form of a CIDR mask + * Add an ip range in the form of a CIDR mask. + * * @param string $mask a valid CIDR mask - * @return IpRange + * + * @return $this */ public function addMaskRange($mask) { - return $this->addParam("ranges", array("mask" => $mask)); + return $this->addParam('ranges', array('mask' => $mask)); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Max.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Max.php index 25031b04..fc0294ca 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Max.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Max.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class Max - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-max-aggregation.html + * Class Max. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-max-aggregation.html */ class Max extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Min.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Min.php index 60aabb56..d5c5c31b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Min.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Min.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class Min - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-min-aggregation.html + * Class Min. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-min-aggregation.html */ class Min extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Missing.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Missing.php index b882aba0..11a6bdf9 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Missing.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Missing.php @@ -1,16 +1,15 @@ <?php - namespace Elastica\Aggregation; /** - * Class Missing - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-missing-aggregation.html + * Class Missing. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-missing-aggregation.html */ class Missing extends AbstractAggregation { /** - * @param string $name the name of this aggregation + * @param string $name the name of this aggregation * @param string $field the field on which to perform this aggregation */ public function __construct($name, $field) @@ -20,12 +19,14 @@ class Missing extends AbstractAggregation } /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return Missing + * + * @return $this */ public function setField($field) { return $this->setParam('field', $field); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Nested.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Nested.php index afbb8373..76407bc8 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Nested.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Nested.php @@ -1,11 +1,10 @@ <?php - namespace Elastica\Aggregation; /** - * Class Nested - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-nested-aggregation.html + * Class Nested. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html */ class Nested extends AbstractAggregation { @@ -20,12 +19,14 @@ class Nested extends AbstractAggregation } /** - * Set the nested path for this aggregation + * Set the nested path for this aggregation. + * * @param string $path - * @return Nested + * + * @return $this */ public function setPath($path) { - return $this->setParam("path", $path); + return $this->setParam('path', $path); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Percentiles.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Percentiles.php new file mode 100644 index 00000000..22079634 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Percentiles.php @@ -0,0 +1,59 @@ +<?php +namespace Elastica\Aggregation; + +/** + * Class Percentiles. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-percentile-aggregation.html + */ +class Percentiles extends AbstractSimpleAggregation +{ + /** + * @param string $name the name of this aggregation + * @param string $field the field on which to perform this aggregation + */ + public function __construct($name, $field = null) + { + parent::__construct($name); + + if (!is_null($field)) { + $this->setField($field); + } + } + + /** + * Set compression parameter. + * + * @param float $value + * + * @return $this + */ + public function setCompression($value) + { + return $this->setParam('compression', (float) $value); + } + + /** + * Set which percents must be returned. + * + * @param float[] $percents + * + * @return $this + */ + public function setPercents(array $percents) + { + return $this->setParam('percents', $percents); + } + + /** + * Add yet another percent to result. + * + * @param float $percent + * + * @return $this + */ + public function addPercent($percent) + { + return $this->addParam('percents', (float) $percent); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Range.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Range.php index ab70c5e4..becafb28 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Range.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Range.php @@ -1,45 +1,58 @@ <?php namespace Elastica\Aggregation; - use Elastica\Exception\InvalidException; /** - * Class Range - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-range-aggregation.html + * Class Range. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-range-aggregation.html */ class Range extends AbstractSimpleAggregation { /** - * Add a range to this aggregation - * @param int|float $fromValue low end of this range, exclusive (greater than) - * @param int|float $toValue high end of this range, exclusive (less than) - * @return Range + * Add a range to this aggregation. + * + * @param int|float $fromValue low end of this range, exclusive (greater than or equal to) + * @param int|float $toValue high end of this range, exclusive (less than) + * @param string $key customized key value + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ - public function addRange($fromValue = null, $toValue = null) + public function addRange($fromValue = null, $toValue = null, $key = null) { if (is_null($fromValue) && is_null($toValue)) { - throw new InvalidException("Either fromValue or toValue must be set. Both cannot be null."); + throw new InvalidException('Either fromValue or toValue must be set. Both cannot be null.'); } + $range = array(); + if (!is_null($fromValue)) { $range['from'] = $fromValue; } + if (!is_null($toValue)) { $range['to'] = $toValue; } + + if (!is_null($key)) { + $range['key'] = $key; + } + return $this->addParam('ranges', $range); } /** - * If set to true, a unique string key will be associated with each bucket, and ranges will be returned as an associative array + * If set to true, a unique string key will be associated with each bucket, and ranges will be returned as an associative array. + * * @param bool $keyed - * @return Range + * + * @return $this */ public function setKeyedResponse($keyed = true) { - return $this->setParam('keyed', (bool)$keyed); + return $this->setParam('keyed', (bool) $keyed); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ReverseNested.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ReverseNested.php index d4056f13..5216ae85 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ReverseNested.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ReverseNested.php @@ -1,12 +1,10 @@ <?php - namespace Elastica\Aggregation; /** - * Reversed Nested Aggregation + * Reversed Nested Aggregation. * - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html */ class ReverseNested extends AbstractAggregation { @@ -24,14 +22,15 @@ class ReverseNested extends AbstractAggregation } /** - * Set the nested path for this aggregation + * Set the nested path for this aggregation. * * @param string $path - * @return ReverseNested + * + * @return $this */ public function setPath($path) { - return $this->setParam("path", $path); + return $this->setParam('path', $path); } /** @@ -43,7 +42,7 @@ class ReverseNested extends AbstractAggregation // ensure we have an object for the reverse_nested key. // if we don't have a path, then this would otherwise get encoded as an empty array, which is invalid. - $array['reverse_nested'] = (object)$array['reverse_nested']; + $array['reverse_nested'] = (object) $array['reverse_nested']; return $array; } diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ScriptedMetric.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ScriptedMetric.php new file mode 100644 index 00000000..3e51f056 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ScriptedMetric.php @@ -0,0 +1,82 @@ +<?php +namespace Elastica\Aggregation; + +/** + * Class ScriptedMetric. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.html + */ +class ScriptedMetric extends AbstractAggregation +{ + /** + * @param string $name the name if this aggregation + * @param string|null $initScript Executed prior to any collection of documents + * @param string|null $mapScript Executed once per document collected + * @param string|null $combineScript Executed once on each shard after document collection is complete + * @param string|null $reduceScript Executed once on the coordinating node after all shards have returned their results + */ + public function __construct($name, $initScript = null, $mapScript = null, $combineScript = null, $reduceScript = null) + { + parent::__construct($name); + if ($initScript) { + $this->setInitScript($initScript); + } + if ($mapScript) { + $this->setMapScript($mapScript); + } + if ($combineScript) { + $this->setCombineScript($combineScript); + } + if ($reduceScript) { + $this->setReduceScript($reduceScript); + } + } + + /** + * Set the field for this aggregation. + * + * @param string $script the name of the document field on which to perform this aggregation + * + * @return $this + */ + public function setCombineScript($script) + { + return $this->setParam('combine_script', $script); + } + + /** + * Set the field for this aggregation. + * + * @param string $script the name of the document field on which to perform this aggregation + * + * @return $this + */ + public function setInitScript($script) + { + return $this->setParam('init_script', $script); + } + + /** + * Set the field for this aggregation. + * + * @param string $script the name of the document field on which to perform this aggregation + * + * @return $this + */ + public function setMapScript($script) + { + return $this->setParam('map_script', $script); + } + + /** + * Set the field for this aggregation. + * + * @param string $script the name of the document field on which to perform this aggregation + * + * @return $this + */ + public function setReduceScript($script) + { + return $this->setParam('reduce_script', $script); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/SignificantTerms.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/SignificantTerms.php new file mode 100644 index 00000000..fa394791 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/SignificantTerms.php @@ -0,0 +1,27 @@ +<?php +namespace Elastica\Aggregation; + +use Elastica\Filter\AbstractFilter; + +/** + * Class SignificantTerms. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html + */ +class SignificantTerms extends AbstractTermsAggregation +{ + /** + * The default source of statistical information for background term frequencies is the entire index and this scope can + * be narrowed through the use of a background_filter to focus in on significant terms within a narrower context. + * + * @param AbstractFilter $filter + * + * @return $this + * + * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html#_custom_background_context + */ + public function setBackgroundFilter(AbstractFilter $filter) + { + return $this->setParam('background_filter', $filter->toArray()); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Stats.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Stats.php index 18c903e9..f512628c 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Stats.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Stats.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class Stats - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-stats-aggregation.html + * Class Stats. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-stats-aggregation.html */ class Stats extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Sum.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Sum.php index 4d1ef4de..5172a684 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Sum.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Sum.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Aggregation; /** - * Class Sum - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-sum-aggregation.html + * Class Sum. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html */ class Sum extends AbstractSimpleAggregation { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Terms.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Terms.php index 9ede855c..8d0d6bef 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/Terms.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/Terms.php @@ -1,97 +1,23 @@ <?php - namespace Elastica\Aggregation; /** - * Class Terms - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-bucket-terms-aggregation.html + * Class Terms. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html */ -class Terms extends AbstractSimpleAggregation +class Terms extends AbstractTermsAggregation { /** - * Set the bucket sort order - * @param string $order "_count", "_term", or the name of a sub-aggregation or sub-aggregation response field + * Set the bucket sort order. + * + * @param string $order "_count", "_term", or the name of a sub-aggregation or sub-aggregation response field * @param string $direction "asc" or "desc" - * @return Terms + * + * @return $this */ public function setOrder($order, $direction) { - return $this->setParam("order", array($order => $direction)); - } - - /** - * Set the minimum number of documents in which a term must appear in order to be returned in a bucket - * @param int $count - * @return Terms - */ - public function setMinimumDocumentCount($count) - { - return $this->setParam("min_doc_count", $count); - } - - /** - * Filter documents to include based on a regular expression - * @param string $pattern a regular expression - * @param string $flags Java Pattern flags - * @return Terms - */ - public function setInclude($pattern, $flags = null) - { - if (is_null($flags)) { - return $this->setParam("include", $pattern); - } - return $this->setParam("include", array( - "pattern" => $pattern, - "flags" => $flags - )); - } - - /** - * Filter documents to exclude based on a regular expression - * @param string $pattern a regular expression - * @param string $flags Java Pattern flags - * @return Terms - */ - public function setExclude($pattern, $flags = null) - { - if (is_null($flags)) { - return $this->setParam("exclude", $pattern); - } - return $this->setParam("exclude", array( - "pattern" => $pattern, - "flags" => $flags - )); - } - - /** - * Sets the amount of terms to be returned. - * @param int $size The amount of terms to be returned. - * @return \Elastica\Aggregation\Terms - */ - public function setSize($size) - { - return $this->setParam('size', $size); - } - - /** - * Sets how many terms the coordinating node will request from each shard. - * @param int $shard_size The amount of terms to be returned. - * @return \Elastica\Aggregation\Terms - */ - public function setShardSize($shard_size) - { - return $this->setParam('shard_size', $shard_size); - } - - /** - * Instruct Elasticsearch to use direct field data or ordinals of the field values to execute this aggregation. - * The execution hint will be ignored if it is not applicable. - * @param string $hint map or ordinals - * @return Terms - */ - public function setExecutionHint($hint) - { - return $this->setParam("execution_hint", $hint); + return $this->setParam('order', array($order => $direction)); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/TopHits.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/TopHits.php new file mode 100644 index 00000000..91a48a48 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/TopHits.php @@ -0,0 +1,156 @@ +<?php +namespace Elastica\Aggregation; + +use Elastica\Script; +use Elastica\ScriptFields; + +/** + * Class TopHits. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html + */ +class TopHits extends AbstractAggregation +{ + /** + * @return array + */ + public function toArray() + { + $array = parent::toArray(); + + // if there are no params, it's ok, but ES will throw exception if json + // will be like {"top_hits":[]} instead of {"top_hits":{}} + if (empty($array['top_hits'])) { + $array['top_hits'] = new \stdClass(); + } + + return $array; + } + + /** + * The maximum number of top matching hits to return per bucket. By default the top three matching hits are returned. + * + * @param int $size + * + * @return $this + */ + public function setSize($size) + { + return $this->setParam('size', (int) $size); + } + + /** + * The offset from the first result you want to fetch. + * + * @param int $from + * + * @return $this + */ + public function setFrom($from) + { + return $this->setParam('from', (int) $from); + } + + /** + * How the top matching hits should be sorted. By default the hits are sorted by the score of the main query. + * + * @param array $sortArgs + * + * @return $this + */ + public function setSort(array $sortArgs) + { + return $this->setParam('sort', $sortArgs); + } + + /** + * Allows to control how the _source field is returned with every hit. + * + * @param array $fields + * + * @return $this + */ + public function setSource(array $fields) + { + return $this->setParam('_source', $fields); + } + + /** + * Returns a version for each search hit. + * + * @param bool $version + * + * @return $this + */ + public function setVersion($version) + { + return $this->setParam('version', (bool) $version); + } + + /** + * Enables explanation for each hit on how its score was computed. + * + * @param bool $explain + * + * @return $this + */ + public function setExplain($explain) + { + return $this->setParam('explain', (bool) $explain); + } + + /** + * Set script fields. + * + * @param array|\Elastica\ScriptFields $scriptFields + * + * @return $this + */ + public function setScriptFields($scriptFields) + { + if (is_array($scriptFields)) { + $scriptFields = new ScriptFields($scriptFields); + } + + return $this->setParam('script_fields', $scriptFields->toArray()); + } + + /** + * Adds a Script to the aggregation. + * + * @param string $name + * @param \Elastica\Script $script + * + * @return $this + */ + public function addScriptField($name, Script $script) + { + $this->_params['script_fields'][$name] = $script->toArray(); + + return $this; + } + + /** + * Sets highlight arguments for the results. + * + * @param array $highlightArgs + * + * @return $this + */ + public function setHighlight(array $highlightArgs) + { + return $this->setParam('highlight', $highlightArgs); + } + + /** + * Allows to return the field data representation of a field for each hit. + * + * @param array $fields + * + * @return $this + */ + public function setFieldDataFields(array $fields) + { + return $this->setParam('fielddata_fields', $fields); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ValueCount.php b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ValueCount.php index 36fb2a2c..8706a1be 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Aggregation/ValueCount.php +++ b/vendor/ruflin/elastica/lib/Elastica/Aggregation/ValueCount.php @@ -1,16 +1,15 @@ <?php - namespace Elastica\Aggregation; /** - * Class ValueCount - * @package Elastica\Aggregation - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-aggregations-metrics-valuecount-aggregation.html + * Class ValueCount. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html */ class ValueCount extends AbstractAggregation { /** - * @param string $name the name of this aggregation + * @param string $name the name of this aggregation * @param string $field the field on which to perform this aggregation */ public function __construct($name, $field) @@ -20,12 +19,14 @@ class ValueCount extends AbstractAggregation } /** - * Set the field for this aggregation + * Set the field for this aggregation. + * * @param string $field the name of the document field on which to perform this aggregation - * @return ValueCount + * + * @return $this */ public function setField($field) { return $this->setParam('field', $field); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk.php b/vendor/ruflin/elastica/lib/Elastica/Bulk.php index 439fa566..e7693dce 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk.php @@ -1,20 +1,13 @@ <?php - namespace Elastica; -use Elastica\Document; -use Elastica\Exception\Bulk\ResponseException as BulkResponseException; -use Elastica\Exception\Bulk\UdpException; -use Elastica\Exception\InvalidException; -use Elastica\Request; -use Elastica\Response; -use Elastica\Client; -use Elastica\Index; -use Elastica\Type; use Elastica\Bulk\Action; use Elastica\Bulk\Action\AbstractDocument as AbstractDocumentAction; -use Elastica\Bulk\ResponseSet; use Elastica\Bulk\Response as BulkResponse; +use Elastica\Bulk\ResponseSet; +use Elastica\Exception\Bulk\ResponseException as BulkResponseException; +use Elastica\Exception\Bulk\UdpException; +use Elastica\Exception\InvalidException; class Bulk { @@ -58,7 +51,8 @@ class Bulk /** * @param string|\Elastica\Index $index - * @return \Elastica\Bulk + * + * @return $this */ public function setIndex($index) { @@ -89,7 +83,8 @@ class Bulk /** * @param string|\Elastica\Type $type - * @return \Elastica\Bulk + * + * @return $this */ public function setType($type) { @@ -126,28 +121,32 @@ class Bulk { $path = ''; if ($this->hasIndex()) { - $path .= $this->getIndex() . '/'; + $path .= $this->getIndex().'/'; if ($this->hasType()) { - $path .= $this->getType() . '/'; + $path .= $this->getType().'/'; } } $path .= '_bulk'; + return $path; } /** * @param \Elastica\Bulk\Action $action - * @return \Elastica\Bulk + * + * @return $this */ public function addAction(Action $action) { $this->_actions[] = $action; + return $this; } /** * @param \Elastica\Bulk\Action[] $actions - * @return \Elastica\Bulk + * + * @return $this */ public function addActions(array $actions) { @@ -168,8 +167,9 @@ class Bulk /** * @param \Elastica\Document $document - * @param string $opType - * @return \Elastica\Bulk + * @param string $opType + * + * @return $this */ public function addDocument(Document $document, $opType = null) { @@ -180,8 +180,9 @@ class Bulk /** * @param \Elastica\Document[] $documents - * @param string $opType - * @return \Elastica\Bulk + * @param string $opType + * + * @return $this */ public function addDocuments(array $documents, $opType = null) { @@ -194,8 +195,9 @@ class Bulk /** * @param \Elastica\Script $data - * @param string $opType - * @return \Elastica\Bulk + * @param string $opType + * + * @return $this */ public function addScript(Script $script, $opType = null) { @@ -206,8 +208,9 @@ class Bulk /** * @param \Elastica\Document[] $scripts - * @param string $opType - * @return \Elastica\Bulk + * @param string $opType + * + * @return $this */ public function addScripts(array $scripts, $opType = null) { @@ -220,23 +223,23 @@ class Bulk /** * @param \Elastica\Script|\Elastica\Document\array $data - * @param string $opType - * @return \Elastica\Bulk + * @param string $opType + * + * @return $this */ public function addData($data, $opType = null) { - if(!is_array($data)){ + if (!is_array($data)) { $data = array($data); } - foreach ($data as $actionData){ - - if ($actionData instanceOf Script) { + foreach ($data as $actionData) { + if ($actionData instanceof Script) { $this->addScript($actionData, $opType); - }else if ($actionData instanceof Document) { + } elseif ($actionData instanceof Document) { $this->addDocument($actionData, $opType); - }else{ - throw new \InvalidArgumentException("Data should be a Document, a Script or an array containing Documents and/or Scripts"); + } else { + throw new \InvalidArgumentException('Data should be a Document, a Script or an array containing Documents and/or Scripts'); } } @@ -245,8 +248,10 @@ class Bulk /** * @param array $data - * @return \Elastica\Bulk + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function addRawData(array $data) { @@ -282,20 +287,30 @@ class Bulk /** * Set a url parameter on the request bulk request. - * @var string $name name of the parameter - * @var string $value value of the parameter + * + * @param string $name name of the parameter + * @param string $value value of the parameter + * + * @return $this */ - public function setRequestParam($name, $value) { - $this->_requestParams[ $name ] = $value; + public function setRequestParam($name, $value) + { + $this->_requestParams[$name] = $value; + + return $this; } /** * Set the amount of time that the request will wait the shards to come on line. * Requires Elasticsearch version >= 0.90.8. - * @var string $time timeout in Elasticsearch time format + * + * @param string $time timeout in Elasticsearch time format + * + * @return $this */ - public function setShardTimeout($time) { - $this->setRequestParam( 'timeout', $time ); + public function setShardTimeout($time) + { + return $this->setRequestParam('timeout', $time); } /** @@ -313,8 +328,9 @@ class Bulk { $data = ''; foreach ($this->getActions() as $action) { - $data.= $action->toString(); + $data .= $action->toString(); } + return $data; } @@ -329,6 +345,7 @@ class Bulk $data[] = $row; } } + return $data; } @@ -347,8 +364,10 @@ class Bulk /** * @param \Elastica\Response $response - * @throws Exception\Bulk\ResponseException - * @throws Exception\InvalidException + * + * @throws \Elastica\Exception\Bulk\ResponseException + * @throws \Elastica\Exception\InvalidException + * * @return \Elastica\Bulk\ResponseSet */ protected function _processResponse(Response $response) @@ -361,9 +380,8 @@ class Bulk if (isset($responseData['items']) && is_array($responseData['items'])) { foreach ($responseData['items'] as $key => $item) { - if (!isset($actions[$key])) { - throw new InvalidException('No response found for action #' . $key); + throw new InvalidException('No response found for action #'.$key); } $action = $actions[$key]; @@ -400,7 +418,8 @@ class Bulk /** * @param string $host - * @param int $port + * @param int $port + * * @throws \Elastica\Exception\Bulk\UdpException */ public function sendUdp($host = null, $port = null) diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action.php index 7922ec13..25d02adc 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action.php @@ -1,16 +1,15 @@ <?php - namespace Elastica\Bulk; use Elastica\Bulk; -use Elastica\JSON; use Elastica\Index; +use Elastica\JSON; use Elastica\Type; class Action { const OP_TYPE_CREATE = 'create'; - const OP_TYPE_INDEX = 'index'; + const OP_TYPE_INDEX = 'index'; const OP_TYPE_DELETE = 'delete'; const OP_TYPE_UPDATE = 'update'; @@ -21,7 +20,7 @@ class Action self::OP_TYPE_CREATE, self::OP_TYPE_INDEX, self::OP_TYPE_DELETE, - self::OP_TYPE_UPDATE + self::OP_TYPE_UPDATE, ); /** @@ -41,8 +40,8 @@ class Action /** * @param string $opType - * @param array $metadata - * @param array $source + * @param array $metadata + * @param array $source */ public function __construct($opType = self::OP_TYPE_INDEX, array $metadata = array(), array $source = array()) { @@ -53,7 +52,8 @@ class Action /** * @param string $type - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setOpType($type) { @@ -72,7 +72,8 @@ class Action /** * @param array $metadata - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setMetadata(array $metadata) { @@ -99,7 +100,8 @@ class Action /** * @param array $source - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setSource($source) { @@ -126,7 +128,8 @@ class Action /** * @param string|\Elastica\Index $index - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setIndex($index) { @@ -140,7 +143,8 @@ class Action /** * @param string|\Elastica\Type $type - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setType($type) { @@ -155,7 +159,8 @@ class Action /** * @param string $id - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setId($id) { @@ -166,7 +171,8 @@ class Action /** * @param string $routing - * @return \Elastica\Bulk\Action + * + * @return $this */ public function setRouting($routing) { @@ -184,6 +190,7 @@ class Action if ($this->hasSource()) { $data[] = $this->getSource(); } + return $data; } @@ -192,24 +199,26 @@ class Action */ public function toString() { - $string = JSON::stringify($this->getActionMetadata(), JSON_FORCE_OBJECT) . Bulk::DELIMITER; + $string = JSON::stringify($this->getActionMetadata(), JSON_FORCE_OBJECT).Bulk::DELIMITER; if ($this->hasSource()) { $source = $this->getSource(); if (is_string($source)) { - $string.= $source; + $string .= $source; } elseif (is_array($source) && array_key_exists('doc', $source) && is_string($source['doc'])) { $docAsUpsert = (isset($source['doc_as_upsert'])) ? ', "doc_as_upsert": '.$source['doc_as_upsert'] : ''; - $string.= '{"doc": '.$source['doc'].$docAsUpsert.'}'; + $string .= '{"doc": '.$source['doc'].$docAsUpsert.'}'; } else { - $string.= JSON::stringify($source, 'JSON_ELASTICSEARCH'); + $string .= JSON::stringify($source, 'JSON_ELASTICSEARCH'); } - $string.= Bulk::DELIMITER; + $string .= Bulk::DELIMITER; } + return $string; } /** * @param string $opType + * * @return bool */ public static function isValidOpType($opType) diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php index 545e695c..3127ff9c 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Bulk\Action; use Elastica\AbstractUpdateAction; @@ -24,7 +23,8 @@ abstract class AbstractDocument extends Action /** * @param \Elastica\Document $document - * @return \Elastica\Bulk\Action\AbstractDocument + * + * @return $this */ public function setDocument(Document $document) { @@ -39,12 +39,13 @@ abstract class AbstractDocument extends Action /** * @param \Elastica\Script $script - * @return \Elastica\Bulk\Action\AbstractDocument + * + * @return $this */ public function setScript(Script $script) { if (!($this instanceof UpdateDocument)) { - throw new \BadMethodCallException("setScript() can only be used for UpdateDocument"); + throw new \BadMethodCallException('setScript() can only be used for UpdateDocument'); } $this->_data = $script; @@ -57,21 +58,19 @@ abstract class AbstractDocument extends Action /** * @param \Elastica\Script|\Elastica\Document $data + * * @throws \InvalidArgumentException - * @return \Elastica\Bulk\Action\AbstractDocument + * + * @return $this */ public function setData($data) { if ($data instanceof Script) { - $this->setScript($data); - - }else if ($data instanceof Document) { - + } elseif ($data instanceof Document) { $this->setDocument($data); - - }else{ - throw new \InvalidArgumentException("Data should be a Document or a Script."); + } else { + throw new \InvalidArgumentException('Data should be a Document or a Script.'); } return $this; @@ -79,7 +78,8 @@ abstract class AbstractDocument extends Action /** * Note: This is for backwards compatibility. - * @return \Elastica\Document + * + * @return \Elastica\Document|null */ public function getDocument() { @@ -87,12 +87,13 @@ abstract class AbstractDocument extends Action return $this->_data; } - return null; + return; } /** * Note: This is for backwards compatibility. - * @return \Elastica\Script + * + * @return \Elastica\Script|null */ public function getScript() { @@ -100,7 +101,7 @@ abstract class AbstractDocument extends Action return $this->_data; } - return null; + return; } /** @@ -113,22 +114,24 @@ abstract class AbstractDocument extends Action /** * @param \Elastica\AbstractUpdateAction $source + * * @return array */ abstract protected function _getMetadata(AbstractUpdateAction $source); /** * @param \Elastica\Document|\Elastica\Script $data - * @param string $opType - * @return \Elastica\Bulk\Action\AbstractDocument + * @param string $opType + * + * @return static */ public static function create($data, $opType = null) { - //Check type - if (!($data instanceof Document) && !($data instanceof Script)) { - throw new \InvalidArgumentException("The data needs to be a Document or a Script."); - } - + //Check type + if (!($data instanceof Document) && !($data instanceof Script)) { + throw new \InvalidArgumentException('The data needs to be a Document or a Script.'); + } + if (null === $opType && $data->hasOpType()) { $opType = $data->getOpType(); } @@ -137,8 +140,8 @@ abstract class AbstractDocument extends Action if ($data instanceof Script) { if ($opType === null) { $opType = self::OP_TYPE_UPDATE; - } else if ($opType != self::OP_TYPE_UPDATE) { - throw new \InvalidArgumentException("Scripts can only be used with the update operation type."); + } elseif ($opType != self::OP_TYPE_UPDATE) { + throw new \InvalidArgumentException('Scripts can only be used with the update operation type.'); } } @@ -157,6 +160,7 @@ abstract class AbstractDocument extends Action $action = new IndexDocument($data); break; } + return $action; } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php index ae868b49..82581856 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Bulk\Action; class CreateDocument extends IndexDocument diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/DeleteDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/DeleteDocument.php index 572f80b6..5a243870 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/DeleteDocument.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/DeleteDocument.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Bulk\Action; use Elastica\AbstractUpdateAction; @@ -13,6 +12,7 @@ class DeleteDocument extends AbstractDocument /** * @param \Elastica\AbstractUpdateAction $action + * * @return array */ protected function _getMetadata(AbstractUpdateAction $action) @@ -24,7 +24,7 @@ class DeleteDocument extends AbstractDocument 'version', 'version_type', 'routing', - 'parent' + 'parent', ); $metadata = $action->getOptions($params, true); diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php index d405563e..0cf30e61 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php @@ -1,9 +1,7 @@ <?php - namespace Elastica\Bulk\Action; use Elastica\AbstractUpdateAction; -use Elastica\Bulk\Action; use Elastica\Document; class IndexDocument extends AbstractDocument @@ -15,7 +13,8 @@ class IndexDocument extends AbstractDocument /** * @param \Elastica\Document $document - * @return \Elastica\Bulk\Action\IndexDocument + * + * @return $this */ public function setDocument(Document $document) { @@ -28,6 +27,7 @@ class IndexDocument extends AbstractDocument /** * @param \Elastica\AbstractUpdateAction $source + * * @return array */ protected function _getMetadata(AbstractUpdateAction $action) @@ -45,6 +45,7 @@ class IndexDocument extends AbstractDocument 'timestamp', 'retry_on_conflict', ); + $metadata = $action->getOptions($params, true); return $metadata; diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php index 4c1dbaa4..2b133acb 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php @@ -1,14 +1,9 @@ <?php - namespace Elastica\Bulk\Action; use Elastica\Document; use Elastica\Script; -/** - * @package Elastica\Bulk\Action - * @link http://www.elasticsearch.org/guide/reference/api/bulk/ - */ class UpdateDocument extends IndexDocument { /** @@ -18,8 +13,10 @@ class UpdateDocument extends IndexDocument /** * Set the document for this bulk update action. + * * @param \Elastica\Document $document - * @return \Elastica\Bulk\Action\UpdateDocument + * + * @return $this */ public function setDocument(Document $document) { @@ -28,10 +25,8 @@ class UpdateDocument extends IndexDocument $source = array('doc' => $document->getData()); if ($document->getDocAsUpsert()) { - $source['doc_as_upsert'] = true; - - }else if ($document->hasUpsert()) { - + $source['doc_as_upsert'] = true; + } elseif ($document->hasUpsert()) { $upsert = $document->getUpsert()->getData(); if (!empty($upsert)) { @@ -46,7 +41,8 @@ class UpdateDocument extends IndexDocument /** * @param \Elastica\Script $script - * @return \Elastica\Bulk\Action\AbstractDocument + * + * @return $this */ public function setScript(Script $script) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Response.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Response.php index 5abd1850..855a72c5 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/Response.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Response.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Bulk; use Elastica\Response as BaseResponse; @@ -17,9 +16,9 @@ class Response extends BaseResponse protected $_opType; /** - * @param array|string $responseData + * @param array|string $responseData * @param \Elastica\Bulk\Action $action - * @param string $opType + * @param string $opType */ public function __construct($responseData, Action $action, $opType) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/ResponseSet.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/ResponseSet.php index 9fd835e4..1837203f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Bulk/ResponseSet.php +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/ResponseSet.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Bulk; use Elastica\Response as BaseResponse; @@ -17,7 +16,7 @@ class ResponseSet extends BaseResponse implements \Iterator, \Countable protected $_position = 0; /** - * @param \Elastica\Response $response + * @param \Elastica\Response $response * @param \Elastica\Bulk\Response[] $bulkResponses */ public function __construct(BaseResponse $response, array $bulkResponses) @@ -36,7 +35,7 @@ class ResponseSet extends BaseResponse implements \Iterator, \Countable } /** - * Returns first found error + * Returns first found error. * * @return string */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Client.php b/vendor/ruflin/elastica/lib/Elastica/Client.php index a5821180..b30bdb43 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Client.php +++ b/vendor/ruflin/elastica/lib/Elastica/Client.php @@ -1,27 +1,21 @@ <?php - namespace Elastica; -use Elastica\Bulk; use Elastica\Bulk\Action; -use Elastica\Exception\ResponseException; -use Elastica\Exception\ClientException; use Elastica\Exception\ConnectionException; use Elastica\Exception\InvalidException; use Elastica\Exception\RuntimeException; use Psr\Log\LoggerInterface; /** - * Client to connect the the elasticsearch server + * Client to connect the the elasticsearch server. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Client { /** - * Config with defaults + * Config with defaults. * * log: Set to true, to enable logging, set a string to log to a specific file * retryOnConflict: Use in \Elastica\Client::updateDocument @@ -29,26 +23,21 @@ class Client * @var array */ protected $_config = array( - 'host' => null, - 'port' => null, - 'path' => null, - 'url' => null, - 'proxy' => null, - 'transport' => null, - 'persistent' => true, - 'timeout' => null, - 'connections' => array(), // host, port, path, timeout, transport, persistent, timeout, config -> (curl, headers, url) - 'roundRobin' => false, - 'log' => false, + 'host' => null, + 'port' => null, + 'path' => null, + 'url' => null, + 'proxy' => null, + 'transport' => null, + 'persistent' => true, + 'timeout' => null, + 'connections' => array(), // host, port, path, timeout, transport, persistent, timeout, config -> (curl, headers, url) + 'roundRobin' => false, + 'log' => false, 'retryOnConflict' => 0, ); /** - * @var \Elastica\Connection[] List of connections - */ - protected $_connections = array(); - - /** * @var callback */ protected $_callback = null; @@ -67,9 +56,13 @@ class Client * @var LoggerInterface */ protected $_logger = null; + /** + * @var Connection\ConnectionPool + */ + protected $_connectionPool = null; /** - * Creates a new Elastica client + * Creates a new Elastica client. * * @param array $config OPTIONAL Additional config options * @param callback $callback OPTIONAL Callback function which can be used to be notified about errors (for example connection down) @@ -82,32 +75,45 @@ class Client } /** - * Inits the client connections + * Inits the client connections. */ protected function _initConnections() { - $connections = $this->getConfig('connections'); + $connections = array(); - foreach ($connections as $connection) { - $this->_connections[] = Connection::create($this->_prepareConnectionParams($connection)); + foreach ($this->getConfig('connections') as $connection) { + $connections[] = Connection::create($this->_prepareConnectionParams($connection)); } if (isset($this->_config['servers'])) { foreach ($this->getConfig('servers') as $server) { - $this->_connections[] = Connection::create($this->_prepareConnectionParams($server)); + $connections[] = Connection::create($this->_prepareConnectionParams($server)); } } // If no connections set, create default connection - if (empty($this->_connections)) { - $this->_connections[] = Connection::create($this->_prepareConnectionParams($this->getConfig())); + if (empty($connections)) { + $connections[] = Connection::create($this->_prepareConnectionParams($this->getConfig())); } + + if (!isset($this->_config['connectionStrategy'])) { + if ($this->getConfig('roundRobin') === true) { + $this->setConfigValue('connectionStrategy', 'RoundRobin'); + } else { + $this->setConfigValue('connectionStrategy', 'Simple'); + } + } + + $strategy = Connection\Strategy\StrategyFactory::create($this->getConfig('connectionStrategy')); + + $this->_connectionPool = new Connection\ConnectionPool($connections, $strategy, $this->_callback); } /** * Creates a Connection params array from a Client or server config array. * * @param array $config + * * @return array */ protected function _prepareConnectionParams(array $config) @@ -126,10 +132,11 @@ class Client } /** - * Sets specific config values (updates and keeps default values) + * Sets specific config values (updates and keeps default values). + * + * @param array $config Params * - * @param array $config Params - * @return \Elastica\Client + * @return $this */ public function setConfig(array $config) { @@ -142,11 +149,13 @@ class Client /** * Returns a specific config key or the whole - * config array if not set + * config array if not set. + * + * @param string $key Config key * - * @param string $key Config key * @throws \Elastica\Exception\InvalidException - * @return array|string Config value + * + * @return array|string Config value */ public function getConfig($key = '') { @@ -155,18 +164,19 @@ class Client } if (!array_key_exists($key, $this->_config)) { - throw new InvalidException('Config key is not set: ' . $key); + throw new InvalidException('Config key is not set: '.$key); } return $this->_config[$key]; } /** - * Sets / overwrites a specific config value + * Sets / overwrites a specific config value. + * + * @param string $key Key to set + * @param mixed $value Value * - * @param string $key Key to set - * @param mixed $value Value - * @return \Elastica\Client Client object + * @return $this */ public function setConfigValue($key, $value) { @@ -174,8 +184,9 @@ class Client } /** - * @param array|string $keys config key or path of config keys - * @param mixed $default default value will be returned if key was not found + * @param array|string $keys config key or path of config keys + * @param mixed $default default value will be returned if key was not found + * * @return mixed */ public function getConfigValue($keys, $default = null) @@ -188,13 +199,15 @@ class Client return $default; } } + return $value; } /** - * Returns the index for the given connection + * Returns the index for the given connection. + * + * @param string $name Index name to create connection to * - * @param string $name Index name to create connection to * @return \Elastica\Index Index for the given name */ public function getIndex($name) @@ -203,11 +216,14 @@ class Client } /** - * Adds a HTTP Header + * Adds a HTTP Header. + * + * @param string $header The HTTP Header + * @param string $headerValue The HTTP Header Value * - * @param string $header The HTTP Header - * @param string $headerValue The HTTP Header Value * @throws \Elastica\Exception\InvalidException If $header or $headerValue is not a string + * + * @return $this */ public function addHeader($header, $headerValue) { @@ -216,13 +232,18 @@ class Client } else { throw new InvalidException('Header must be a string'); } + + return $this; } /** - * Remove a HTTP Header + * Remove a HTTP Header. * - * @param string $header The HTTP Header to remove - * @throws \Elastica\Exception\InvalidException IF $header is not a string + * @param string $header The HTTP Header to remove + * + * @throws \Elastica\Exception\InvalidException If $header is not a string + * + * @return $this */ public function removeHeader($header) { @@ -233,21 +254,27 @@ class Client } else { throw new InvalidException('Header must be a string'); } + + return $this; } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. * * Array of \Elastica\Document as input. Index and type has to be * set inside the document, because for bulk settings documents, * documents can belong to any type and index * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document - * @return \Elastica\Bulk\ResponseSet Response object + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document + * * @throws \Elastica\Exception\InvalidException If docs is empty - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @return \Elastica\Bulk\ResponseSet Response object */ - public function updateDocuments(array $docs) { + public function updateDocuments(array $docs) + { if (empty($docs)) { throw new InvalidException('Array has to consist of at least one element'); } @@ -260,16 +287,19 @@ class Client } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. * * Array of \Elastica\Document as input. Index and type has to be * set inside the document, because for bulk settings documents, * documents can belong to any type and index * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document - * @return \Elastica\Bulk\ResponseSet Response object + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document + * * @throws \Elastica\Exception\InvalidException If docs is empty - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @return \Elastica\Bulk\ResponseSet Response object */ public function addDocuments(array $docs) { @@ -285,25 +315,25 @@ class Client } /** - * Update document, using update script. Requires elasticsearch >= 0.19.0 + * Update document, using update script. Requires elasticsearch >= 0.19.0. + * + * @param int $id document id + * @param array|\Elastica\Script|\Elastica\Document $data raw data for request body + * @param string $index index to update + * @param string $type type of index to update + * @param array $options array of query params to use for query. For possible options check es api * - * @param int $id document id - * @param array|\Elastica\Script|\Elastica\Document $data raw data for request body - * @param string $index index to update - * @param string $type type of index to update - * @param array $options array of query params to use for query. For possible options check es api * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/api/update.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html */ public function updateDocument($id, $data, $index, $type, array $options = array()) { - $path = $index . '/' . $type . '/' . $id . '/_update'; + $path = $index.'/'.$type.'/'.$id.'/_update'; if ($data instanceof Script) { $requestData = $data->toArray(); - } elseif ($data instanceof Document) { - $requestData = array('doc' => $data->getData()); if ($data->getDocAsUpsert()) { @@ -339,14 +369,13 @@ class Client //If an upsert document exists if ($data instanceof Script || $data instanceof Document) { - if ($data->hasUpsert()) { $requestData['upsert'] = $data->getUpsert()->getData(); } } if (!isset($options['retry_on_conflict'])) { - $retryOnConflict = $this->getConfig("retryOnConflict"); + $retryOnConflict = $this->getConfig('retryOnConflict'); $options['retry_on_conflict'] = $retryOnConflict; } @@ -371,7 +400,7 @@ class Client /** * @param \Elastica\Response $response * @param \Elastica\Document $document - * @param string $fields Array of field names to be populated or '_source' if whole document data should be updated + * @param string $fields Array of field names to be populated or '_source' if whole document data should be updated */ protected function _populateDocumentFieldsFromResponse(Response $response, Document $document, $fields) { @@ -395,11 +424,13 @@ class Client } /** - * Bulk deletes documents + * Bulk deletes documents. * * @param array|\Elastica\Document[] $docs - * @return \Elastica\Bulk\ResponseSet + * * @throws \Elastica\Exception\InvalidException + * + * @return \Elastica\Bulk\ResponseSet */ public function deleteDocuments(array $docs) { @@ -414,7 +445,7 @@ class Client } /** - * Returns the status object for all indices + * Returns the status object for all indices. * * @return \Elastica\Status Status object */ @@ -424,7 +455,7 @@ class Client } /** - * Returns the current cluster + * Returns the current cluster. * * @return \Elastica\Cluster Cluster object */ @@ -434,54 +465,35 @@ class Client } /** - * @param \Elastica\Connection $connection - * @return \Elastica\Client + * @param \Elastica\Connection $connection + * + * @return $this */ public function addConnection(Connection $connection) { - $this->_connections[] = $connection; + $this->_connectionPool->addConnection($connection); return $this; } /** * Determines whether a valid connection is available for use. - * + * * @return bool */ public function hasConnection() { - foreach ($this->_connections as $connection) - { - if ($connection->isEnabled()) - { - return true; - } - } - - return false; + return $this->_connectionPool->hasConnection(); } /** * @throws \Elastica\Exception\ClientException + * * @return \Elastica\Connection */ public function getConnection() { - $enabledConnection = null; - - foreach ($this->_connections as $connection) { - if ($connection->isEnabled()) { - $enabledConnection = $connection; - break; - } - } - - if (empty($enabledConnection)) { - throw new ClientException('No enabled connection'); - } - - return $enabledConnection; + return $this->_connectionPool->getConnection(); } /** @@ -489,30 +501,42 @@ class Client */ public function getConnections() { - return $this->_connections; + return $this->_connectionPool->getConnections(); + } + + /** + * @return \Elastica\Connection\Strategy\StrategyInterface + */ + public function getConnectionStrategy() + { + return $this->_connectionPool->getStrategy(); } /** - * @param \Elastica\Connection[] $connections - * @return \Elastica\Client + * @param array|\Elastica\Connection[] $connections + * + * @return $this */ public function setConnections(array $connections) { - $this->_connections = $connections; + $this->_connectionPool->setConnections($connections); return $this; } /** - * Deletes documents with the given ids, index, type from the index + * Deletes documents with the given ids, index, type from the index. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html + * + * @param array $ids Document ids + * @param string|\Elastica\Index $index Index name + * @param string|\Elastica\Type $type Type of documents + * @param string|false $routing Optional routing key for all ids * - * @param array $ids Document ids - * @param string|\Elastica\Index $index Index name - * @param string|\Elastica\Type $type Type of documents - * @param string|false $routing Optional routing key for all ids * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Bulk\ResponseSet Response object - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @return \Elastica\Bulk\ResponseSet Response object */ public function deleteIds(array $ids, $index, $type, $routing = false) { @@ -539,7 +563,7 @@ class Client } /** - * Bulk operation + * Bulk operation. * * Every entry in the params array has to exactly on array * of the bulk operation. An example param array would be: @@ -550,11 +574,14 @@ class Client * array('delete' => array('_index' => 'test', '_type' => 'user', '_id' => '2')) * ); * - * @param array $params Parameter array + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html + * + * @param array $params Parameter array + * * @throws \Elastica\Exception\ResponseException * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Bulk\ResponseSet Response object - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @return \Elastica\Bulk\ResponseSet Response object */ public function bulk(array $params) { @@ -570,15 +597,17 @@ class Client } /** - * Makes calls to the elasticsearch server based on this index + * Makes calls to the elasticsearch server based on this index. * * It's possible to make any REST query directly over this method * - * @param string $path Path to call - * @param string $method Rest method to use (GET, POST, DELETE, PUT) - * @param array $data OPTIONAL Arguments as array - * @param array $query OPTIONAL Query params + * @param string $path Path to call + * @param string $method Rest method to use (GET, POST, DELETE, PUT) + * @param array $data OPTIONAL Arguments as array + * @param array $query OPTIONAL Query params + * * @throws Exception\ConnectionException|\Exception + * * @return \Elastica\Response Response object */ public function request($path, $method = Request::GET, $data = array(), array $query = array()) @@ -595,30 +624,26 @@ class Client $this->_lastResponse = $response; return $response; - } catch (ConnectionException $e) { - $connection->setEnabled(false); - - // Calls callback with connection as param to make it possible to persist invalid connections - if ($this->_callback) { - call_user_func($this->_callback, $connection, $e, $this); - } + $this->_connectionPool->onFail($connection, $e, $this); // In case there is no valid connection left, throw exception which caused the disabling of the connection. - if (!$this->hasConnection()) - { + if (!$this->hasConnection()) { throw $e; } + return $this->request($path, $method, $data, $query); } } /** - * Optimizes all search indices + * Optimizes all search indices. + * + * @param array $args OPTIONAL Optional arguments * - * @param array $args OPTIONAL Optional arguments * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-optimize.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-optimize.html */ public function optimizeAll($args = array()) { @@ -626,10 +651,11 @@ class Client } /** - * Refreshes all search indices + * Refreshes all search indices. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-refresh.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html */ public function refreshAll() { @@ -637,9 +663,10 @@ class Client } /** - * logging + * logging. * * @param string|\Elastica\Request $context + * * @throws Exception\RuntimeException */ protected function _log($context) @@ -677,9 +704,10 @@ class Client } /** - * set Logger + * set Logger. * * @param LoggerInterface $logger + * * @return $this */ public function setLogger(LoggerInterface $logger) diff --git a/vendor/ruflin/elastica/lib/Elastica/Cluster.php b/vendor/ruflin/elastica/lib/Elastica/Cluster.php index ac5acf76..990aeeb2 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Cluster.php +++ b/vendor/ruflin/elastica/lib/Elastica/Cluster.php @@ -1,22 +1,21 @@ <?php - namespace Elastica; + use Elastica\Cluster\Health; use Elastica\Cluster\Settings; use Elastica\Exception\NotImplementedException; /** - * Cluster informations for elasticsearch + * Cluster informations for elasticsearch. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html */ class Cluster { /** - * Client + * Client. * * @var \Elastica\Client Client object */ @@ -37,7 +36,7 @@ class Cluster protected $_data; /** - * Creates a cluster object + * Creates a cluster object. * * @param \Elastica\Client $client Connection client object */ @@ -48,7 +47,7 @@ class Cluster } /** - * Refreshes all cluster information (state) + * Refreshes all cluster information (state). */ public function refresh() { @@ -58,7 +57,7 @@ class Cluster } /** - * Returns the response object + * Returns the response object. * * @return \Elastica\Response Response object */ @@ -68,7 +67,7 @@ class Cluster } /** - * Return list of index names + * Return list of index names. * * @return array List of index names */ @@ -85,10 +84,11 @@ class Cluster } /** - * Returns the full state of the cluster + * Returns the full state of the cluster. * * @return array State array - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-state.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html */ public function getState() { @@ -96,34 +96,40 @@ class Cluster } /** - * Returns a list of existing node names + * Returns a list of existing node names. * * @return array List of node names */ public function getNodeNames() { $data = $this->getState(); + $nodeNames = array(); + foreach ($data['nodes'] as $node) { + $nodeNames[] = $node['name']; + } - return array_keys($data['routing_nodes']['nodes']); + return $nodeNames; } /** - * Returns all nodes of the cluster + * Returns all nodes of the cluster. * * @return \Elastica\Node[] */ public function getNodes() { $nodes = array(); - foreach ($this->getNodeNames() as $name) { - $nodes[] = new Node($name, $this->getClient()); + $data = $this->getState(); + + foreach ($data['nodes'] as $id => $name) { + $nodes[] = new Node($id, $this->getClient()); } return $nodes; } /** - * Returns the client object + * Returns the client object. * * @return \Elastica\Client Client object */ @@ -133,11 +139,13 @@ class Cluster } /** - * Returns the cluster information (not implemented yet) + * Returns the cluster information (not implemented yet). + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html + * + * @param array $args Additional arguments * - * @param array $args Additional arguments * @throws \Elastica\Exception\NotImplementedException - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-info.html */ public function getInfo(array $args) { @@ -145,10 +153,11 @@ class Cluster } /** - * Return Cluster health + * Return Cluster health. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html * * @return \Elastica\Cluster\Health - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-health.html */ public function getHealth() { @@ -156,7 +165,7 @@ class Cluster } /** - * Return Cluster settings + * Return Cluster settings. * * @return \Elastica\Cluster\Settings */ @@ -166,15 +175,17 @@ class Cluster } /** - * Shuts down the complete cluster + * Shuts down the complete cluster. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-shutdown.html + * + * @param string $delay OPTIONAL Seconds to shutdown cluster after (default = 1s) * - * @param string $delay OPTIONAL Seconds to shutdown cluster after (default = 1s) * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-shutdown.html */ public function shutdown($delay = '1s') { - $path = '_shutdown?delay=' . $delay; + $path = '_shutdown?delay='.$delay; return $this->_client->request($path, Request::POST); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health.php b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health.php index 18c77cfc..d5d25ff1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health.php +++ b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health.php @@ -1,6 +1,6 @@ <?php - namespace Elastica\Cluster; + use Elastica\Client; use Elastica\Cluster\Health\Index; use Elastica\Request; @@ -8,23 +8,19 @@ use Elastica\Request; /** * Elastic cluster health. * - * @package Elastica * @author Ray Ward <ray.ward@bigcommerce.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-health.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html */ class Health { /** - * Elastica client. - * - * @var \Elastica\Client Client object + * @var \Elastica\Client Client object. */ protected $_client = null; /** - * The cluster health data. - * - * @var array + * @var array The cluster health data. */ protected $_data = null; @@ -63,7 +59,7 @@ class Health /** * Refreshes the health data for the cluster. * - * @return \Elastica\Cluster\Health + * @return $this */ public function refresh() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Index.php b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Index.php index c39e94c3..ef55bd00 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Index.php +++ b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Index.php @@ -1,27 +1,22 @@ <?php - namespace Elastica\Cluster\Health; /** * Wraps status information for an index. * - * @package Elastica * @author Ray Ward <ray.ward@bigcommerce.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-health.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html */ class Index { /** - * The name of the index. - * - * @var string + * @var string The name of the index. */ protected $_name; /** - * The index health data. - * - * @var array + * @var array The index health data. */ protected $_data; diff --git a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Shard.php b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Shard.php index a5da08ae..e1d2c8dc 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Shard.php +++ b/vendor/ruflin/elastica/lib/Elastica/Cluster/Health/Shard.php @@ -1,27 +1,22 @@ <?php - namespace Elastica\Cluster\Health; /** * Wraps status information for a shard. * - * @package Elastica * @author Ray Ward <ray.ward@bigcommerce.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-health.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html */ class Shard { /** - * The shard index/number. - * - * @var int + * @var int The shard index/number. */ protected $_shardNumber; /** - * The shard health data. - * - * @var array + * @var array The shard health data. */ protected $_data; diff --git a/vendor/ruflin/elastica/lib/Elastica/Cluster/Settings.php b/vendor/ruflin/elastica/lib/Elastica/Cluster/Settings.php index 8166dda3..c597417f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Cluster/Settings.php +++ b/vendor/ruflin/elastica/lib/Elastica/Cluster/Settings.php @@ -1,29 +1,25 @@ <?php - namespace Elastica\Cluster; use Elastica\Client; use Elastica\Request; /** - * Cluster settings + * Cluster settings. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-update-settings.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html */ class Settings { /** - * Client - * * @var \Elastica\Client Client object */ protected $_client = null; /** - * Creates a cluster object + * Creates a cluster object. * * @param \Elastica\Client $client Connection client object */ @@ -33,7 +29,7 @@ class Settings } /** - * Returns settings data + * Returns settings data. * * @return array Settings data (persistent and transient) */ @@ -43,11 +39,12 @@ class Settings } /** - * Returns the current persistent settings of the cluster + * Returns the current persistent settings of the cluster. * * If param is set, only specified setting is return. * - * @param string $setting OPTIONAL Setting name to return + * @param string $setting OPTIONAL Setting name to return + * * @return array|string|null Settings data */ public function getPersistent($setting = '') @@ -59,7 +56,7 @@ class Settings if (isset($settings[$setting])) { return $settings[$setting]; } else { - return null; + return; } } @@ -67,11 +64,12 @@ class Settings } /** - * Returns the current transient settings of the cluster + * Returns the current transient settings of the cluster. * * If param is set, only specified setting is return. * - * @param string $setting OPTIONAL Setting name to return + * @param string $setting OPTIONAL Setting name to return + * * @return array|string|null Settings data */ public function getTransient($setting = '') @@ -90,12 +88,14 @@ class Settings if (isset($settings[$key])) { $settings = $settings[$key]; } else { - return null; + return; } } + return $settings; } - return null; + + return; } } @@ -103,10 +103,11 @@ class Settings } /** - * Sets persistent setting + * Sets persistent setting. + * + * @param string $key + * @param string $value * - * @param string $key - * @param string $value * @return \Elastica\Response */ public function setPersistent($key, $value) @@ -114,17 +115,18 @@ class Settings return $this->set( array( 'persistent' => array( - $key => $value - ) + $key => $value, + ), ) ); } /** - * Sets transient settings + * Sets transient settings. + * + * @param string $key + * @param string $value * - * @param string $key - * @param string $value * @return \Elastica\Response */ public function setTransient($key, $value) @@ -132,19 +134,20 @@ class Settings return $this->set( array( 'transient' => array( - $key => $value - ) + $key => $value, + ), ) ); } /** - * Sets the cluster to read only + * Sets the cluster to read only. * * Second param can be used to set it persistent * - * @param bool $readOnly - * @param bool $persistent + * @param bool $readOnly + * @param bool $persistent + * * @return \Elastica\Response $response */ public function setReadOnly($readOnly = true, $persistent = false) @@ -161,9 +164,10 @@ class Settings } /** - * Set settings for cluster + * Set settings for cluster. + * + * @param array $settings Raw settings (including persistent or transient) * - * @param array $settings Raw settings (including persistent or transient) * @return \Elastica\Response */ public function set(array $settings) @@ -172,7 +176,7 @@ class Settings } /** - * Get the client + * Get the client. * * @return \Elastica\Client */ @@ -182,10 +186,11 @@ class Settings } /** - * Sends settings request + * Sends settings request. + * + * @param array $data OPTIONAL Data array + * @param string $method OPTIONAL Transfer method (default = \Elastica\Request::GET) * - * @param array $data OPTIONAL Data array - * @param string $method OPTIONAL Transfer method (default = \Elastica\Request::GET) * @return \Elastica\Response Response object */ public function request(array $data = array(), $method = Request::GET) diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection.php b/vendor/ruflin/elastica/lib/Elastica/Connection.php index b9d910c9..0084b6ee 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Connection.php +++ b/vendor/ruflin/elastica/lib/Elastica/Connection.php @@ -1,30 +1,28 @@ <?php - namespace Elastica; + use Elastica\Exception\InvalidException; use Elastica\Transport\AbstractTransport; /** - * Elastica connection instance to an elasticasearch node + * Elastica connection instance to an elasticasearch node. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Connection extends Param { /** - * Default elastic search port + * Default elastic search port. */ const DEFAULT_PORT = 9200; /** - * Default host + * Default host. */ const DEFAULT_HOST = 'localhost'; /** - * Default transport + * Default transport. * * @var string */ @@ -37,7 +35,14 @@ class Connection extends Param const TIMEOUT = 300; /** - * Creates a new connection object. A connection is enabled by default + * Number of seconds after a connection timeout occurs for every request during the connection phase. + * + * @see Connection::setConnectTimeout(); + */ + const CONNECT_TIMEOUT = 0; + + /** + * Creates a new connection object. A connection is enabled by default. * * @param array $params OPTIONAL Connection params: host, port, transport, timeout. All are optional */ @@ -57,12 +62,13 @@ class Connection extends Param */ public function getPort() { - return $this->hasParam('port')?$this->getParam('port'):self::DEFAULT_PORT; + return $this->hasParam('port') ? $this->getParam('port') : self::DEFAULT_PORT; } /** - * @param int $port - * @return \Elastica\Connection + * @param int $port + * + * @return $this */ public function setPort($port) { @@ -74,12 +80,13 @@ class Connection extends Param */ public function getHost() { - return $this->hasParam('host')?$this->getParam('host'):self::DEFAULT_HOST; + return $this->hasParam('host') ? $this->getParam('host') : self::DEFAULT_HOST; } /** - * @param string $host - * @return \Elastica\Connection + * @param string $host + * + * @return $this */ public function setHost($host) { @@ -91,7 +98,7 @@ class Connection extends Param */ public function getProxy() { - return $this->hasParam('proxy')?$this->getParam('proxy'):null; + return $this->hasParam('proxy') ? $this->getParam('proxy') : null; } /** @@ -99,8 +106,10 @@ class Connection extends Param * empty string to disable proxy and proxy string to set actual http proxy. * * @see http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTPROXY - * @param string|null $proxy - * @return \Elastica\Connection + * + * @param string|null $proxy + * + * @return $this */ public function setProxy($proxy) { @@ -112,12 +121,13 @@ class Connection extends Param */ public function getTransport() { - return $this->hasParam('transport')?$this->getParam('transport'):self::DEFAULT_TRANSPORT; + return $this->hasParam('transport') ? $this->getParam('transport') : self::DEFAULT_TRANSPORT; } /** - * @param string|array $transport - * @return \Elastica\Connection + * @param string|array $transport + * + * @return $this */ public function setTransport($transport) { @@ -129,12 +139,13 @@ class Connection extends Param */ public function getPath() { - return $this->hasParam('path')?$this->getParam('path'):''; + return $this->hasParam('path') ? $this->getParam('path') : ''; } /** - * @param string $path - * @return \Elastica\Connection + * @param string $path + * + * @return $this */ public function setPath($path) { @@ -142,8 +153,9 @@ class Connection extends Param } /** - * @param int $timeout Timeout in seconds - * @return \Elastica\Connection + * @param int $timeout Timeout in seconds + * + * @return $this */ public function setTimeout($timeout) { @@ -155,14 +167,40 @@ class Connection extends Param */ public function getTimeout() { - return (int) $this->hasParam('timeout')?$this->getParam('timeout'):self::TIMEOUT; + return (int) $this->hasParam('timeout') ? $this->getParam('timeout') : self::TIMEOUT; } /** - * Enables a connection + * Number of seconds after a connection timeout occurs for every request during the connection phase. + * Use a small value if you need a fast fail in case of dead, unresponsive or unreachable servers (~5 sec). + * + * Set to zero to switch to the default built-in connection timeout (300 seconds in curl). + * + * @see http://curl.haxx.se/libcurl/c/CURLOPT_CONNECTTIMEOUT.html * - * @param bool $enabled OPTIONAL (default = true) - * @return \Elastica\Connection + * @param int $timeout Connect timeout in seconds + * + * @return $this + */ + public function setConnectTimeout($timeout) + { + return $this->setParam('connectTimeout', $timeout); + } + + /** + * @return int Connection timeout in seconds + */ + public function getConnectTimeout() + { + return (int) $this->hasParam('connectTimeout') ? $this->getParam('connectTimeout') : self::CONNECT_TIMEOUT; + } + + /** + * Enables a connection. + * + * @param bool $enabled OPTIONAL (default = true) + * + * @return $this */ public function setEnabled($enabled = true) { @@ -178,10 +216,11 @@ class Connection extends Param } /** - * Returns an instance of the transport type + * Returns an instance of the transport type. + * + * @throws \Elastica\Exception\InvalidException If invalid transport type * * @return \Elastica\Transport\AbstractTransport Transport object - * @throws \Elastica\Exception\InvalidException If invalid transport type */ public function getTransportObject() { @@ -195,12 +234,13 @@ class Connection extends Param */ public function isPersistent() { - return (bool) $this->hasParam('persistent')?$this->getParam('persistent'):true; + return (bool) $this->hasParam('persistent') ? $this->getParam('persistent') : true; } /** - * @param array $config - * @return \Elastica\Connection + * @param array $config + * + * @return $this */ public function setConfig(array $config) { @@ -208,9 +248,10 @@ class Connection extends Param } /** - * @param string $key - * @param mixed $value - * @return \Elastica\Connection + * @param string $key + * @param mixed $value + * + * @return $this */ public function addConfig($key, $value) { @@ -220,7 +261,8 @@ class Connection extends Param } /** - * @param string $key + * @param string $key + * * @return bool */ public function hasConfig($key) @@ -232,11 +274,13 @@ class Connection extends Param /** * Returns a specific config key or the whole - * config array if not set + * config array if not set. + * + * @param string $key Config key * - * @param string $key Config key * @throws \Elastica\Exception\InvalidException - * @return array|string Config value + * + * @return array|string Config value */ public function getConfig($key = '') { @@ -246,25 +290,27 @@ class Connection extends Param } if (!array_key_exists($key, $config)) { - throw new InvalidException('Config key is not set: ' . $key); + throw new InvalidException('Config key is not set: '.$key); } return $config[$key]; } /** - * @param \Elastica\Connection|array $params Params to create a connection + * @param \Elastica\Connection|array $params Params to create a connection + * * @throws Exception\InvalidException - * @return \Elastica\Connection + * + * @return self */ public static function create($params = array()) { $connection = null; - if ($params instanceof Connection) { + if ($params instanceof self) { $connection = $params; } elseif (is_array($params)) { - $connection = new Connection($params); + $connection = new self($params); } else { throw new InvalidException('Invalid data type'); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/ConnectionPool.php b/vendor/ruflin/elastica/lib/Elastica/Connection/ConnectionPool.php new file mode 100644 index 00000000..b5fa681d --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/ConnectionPool.php @@ -0,0 +1,122 @@ +<?php +namespace Elastica\Connection; + +use Elastica\Client; +use Elastica\Connection; +use Elastica\Connection\Strategy\StrategyInterface; +use Exception; + +/** + * Description of ConnectionPool. + * + * @author chabior + */ +class ConnectionPool +{ + /** + * @var array|\Elastica\Connection[] Connections array + */ + protected $_connections; + + /** + * @var \Elastica\Connection\Strategy\StrategyInterface Strategy for connection + */ + protected $_strategy; + + /** + * @var callback Function called on connection fail + */ + protected $_callback; + + /** + * @param array $connections + * @param \Elastica\Connection\Strategy\StrategyInterface $strategy + * @param callback $callback + */ + public function __construct(array $connections, StrategyInterface $strategy, $callback = null) + { + $this->_connections = $connections; + + $this->_strategy = $strategy; + + $this->_callback = $callback; + } + + /** + * @param \Elastica\Connection $connection + * + * @return $this + */ + public function addConnection(Connection $connection) + { + $this->_connections[] = $connection; + + return $this; + } + + /** + * @param array|\Elastica\Connection[] $connections + * + * @return $this + */ + public function setConnections(array $connections) + { + $this->_connections = $connections; + + return $this; + } + + /** + * @return bool + */ + public function hasConnection() + { + foreach ($this->_connections as $connection) { + if ($connection->isEnabled()) { + return true; + } + } + + return false; + } + + /** + * @return array + */ + public function getConnections() + { + return $this->_connections; + } + + /** + * @throws \Elastica\Exception\ClientException + * + * @return \Elastica\Connection + */ + public function getConnection() + { + return $this->_strategy->getConnection($this->getConnections()); + } + + /** + * @param \Elastica\Connection $connection + * @param \Exception $e + * @param Client $client + */ + public function onFail(Connection $connection, Exception $e, Client $client) + { + $connection->setEnabled(false); + + if ($this->_callback) { + call_user_func($this->_callback, $connection, $e, $client); + } + } + + /** + * @return \Elastica\Connection\Strategy\StrategyInterface + */ + public function getStrategy() + { + return $this->_strategy; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/CallbackStrategy.php b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/CallbackStrategy.php new file mode 100644 index 00000000..ccaeb6dd --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/CallbackStrategy.php @@ -0,0 +1,51 @@ +<?php +namespace Elastica\Connection\Strategy; + +use Elastica\Exception\InvalidException; + +/** + * Description of CallbackStrategy. + * + * @author chabior + */ +class CallbackStrategy implements StrategyInterface +{ + /** + * @var callable + */ + protected $_callback; + + /** + * @param callable $callback + * + * @throws \Elastica\Exception\InvalidException + */ + public function __construct($callback) + { + if (!self::isValid($callback)) { + throw new InvalidException(sprintf('Callback should be a callable, %s given!', gettype($callback))); + } + + $this->_callback = $callback; + } + + /** + * @param array|\Elastica\Connection[] $connections + * + * @return \Elastica\Connection + */ + public function getConnection($connections) + { + return call_user_func_array($this->_callback, array($connections)); + } + + /** + * @param callable $callback + * + * @return bool + */ + public static function isValid($callback) + { + return is_callable($callback); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/RoundRobin.php b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/RoundRobin.php new file mode 100644 index 00000000..92cd570e --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/RoundRobin.php @@ -0,0 +1,24 @@ +<?php +namespace Elastica\Connection\Strategy; + +/** + * Description of RoundRobin. + * + * @author chabior + */ +class RoundRobin extends Simple +{ + /** + * @param array|\Elastica\Connection[] $connections + * + * @throws \Elastica\Exception\ClientException + * + * @return \Elastica\Connection + */ + public function getConnection($connections) + { + shuffle($connections); + + return parent::getConnection($connections); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/Simple.php b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/Simple.php new file mode 100644 index 00000000..7c42dd3b --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/Simple.php @@ -0,0 +1,30 @@ +<?php +namespace Elastica\Connection\Strategy; + +use Elastica\Exception\ClientException; + +/** + * Description of SimpleStrategy. + * + * @author chabior + */ +class Simple implements StrategyInterface +{ + /** + * @param array|\Elastica\Connection[] $connections + * + * @throws \Elastica\Exception\ClientException + * + * @return \Elastica\Connection + */ + public function getConnection($connections) + { + foreach ($connections as $connection) { + if ($connection->isEnabled()) { + return $connection; + } + } + + throw new ClientException('No enabled connection'); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyFactory.php b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyFactory.php new file mode 100644 index 00000000..7590ab11 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyFactory.php @@ -0,0 +1,45 @@ +<?php +namespace Elastica\Connection\Strategy; + +use Elastica\Exception\InvalidException; + +/** + * Description of StrategyFactory. + * + * @author chabior + */ +class StrategyFactory +{ + /** + * @param mixed|callable|string|StrategyInterface $strategyName + * + * @throws \Elastica\Exception\InvalidException + * + * @return \Elastica\Connection\Strategy\StrategyInterface + */ + public static function create($strategyName) + { + if ($strategyName instanceof StrategyInterface) { + return $strategyName; + } + + if (CallbackStrategy::isValid($strategyName)) { + return new CallbackStrategy($strategyName); + } + + if (is_string($strategyName)) { + $requiredInterface = '\\Elastica\\Connection\\Strategy\\StrategyInterface'; + $predefinedStrategy = '\\Elastica\\Connection\\Strategy\\'.$strategyName; + + if (class_exists($predefinedStrategy) && class_implements($predefinedStrategy, $requiredInterface)) { + return new $predefinedStrategy(); + } + + if (class_exists($strategyName) && class_implements($strategyName, $requiredInterface)) { + return new $strategyName(); + } + } + + throw new InvalidException('Can\'t create strategy instance by given argument'); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyInterface.php b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyInterface.php new file mode 100644 index 00000000..29bf7701 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Connection/Strategy/StrategyInterface.php @@ -0,0 +1,17 @@ +<?php +namespace Elastica\Connection\Strategy; + +/** + * Description of AbstractStrategy. + * + * @author chabior + */ +interface StrategyInterface +{ + /** + * @param array|\Elastica\Connection[] $connections + * + * @return \Elastica\Connection + */ + public function getConnection($connections); +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Document.php b/vendor/ruflin/elastica/lib/Elastica/Document.php index 3f6b88de..e82afae9 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Document.php +++ b/vendor/ruflin/elastica/lib/Elastica/Document.php @@ -1,17 +1,13 @@ <?php - namespace Elastica; -use Elastica\Exception\InvalidException; use Elastica\Bulk\Action; -use Elastica\Filter\Bool; +use Elastica\Exception\InvalidException; use Elastica\Exception\NotImplementedException; /** - * Single document stored in elastic search + * Single document stored in elastic search. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Document extends AbstractUpdateAction @@ -19,7 +15,7 @@ class Document extends AbstractUpdateAction const OP_TYPE_CREATE = Action::OP_TYPE_CREATE; /** - * Document data + * Document data. * * @var array Document data */ @@ -28,22 +24,22 @@ class Document extends AbstractUpdateAction /** * Whether to use this document to upsert if the document does not exist. * - * @var boolean + * @var bool */ protected $_docAsUpsert = false; /** - * @var boolean + * @var bool */ protected $_autoPopulate = false; /** - * Creates a new document + * Creates a new document. * - * @param int|string $id OPTIONAL $id Id is create if empty - * @param array|string $data OPTIONAL Data array - * @param string $type OPTIONAL Type name - * @param string $index OPTIONAL Index name + * @param int|string $id OPTIONAL $id Id is create if empty + * @param array|string $data OPTIONAL Data array + * @param string $type OPTIONAL Type name + * @param string $index OPTIONAL Index name */ public function __construct($id = '', $data = array(), $type = '', $index = '') { @@ -55,6 +51,7 @@ class Document extends AbstractUpdateAction /** * @param string $key + * * @return mixed */ public function __get($key) @@ -64,7 +61,7 @@ class Document extends AbstractUpdateAction /** * @param string $key - * @param mixed $value + * @param mixed $value */ public function __set($key, $value) { @@ -73,6 +70,7 @@ class Document extends AbstractUpdateAction /** * @param string $key + * * @return bool */ public function __isset($key) @@ -90,22 +88,27 @@ class Document extends AbstractUpdateAction /** * @param string $key - * @return mixed + * * @throws \Elastica\Exception\InvalidException + * + * @return mixed */ public function get($key) { if (!$this->has($key)) { throw new InvalidException("Field {$key} does not exist"); } + return $this->_data[$key]; } /** * @param string $key - * @param mixed $value + * @param mixed $value + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Document + * + * @return $this */ public function set($key, $value) { @@ -119,6 +122,7 @@ class Document extends AbstractUpdateAction /** * @param string $key + * * @return bool */ public function has($key) @@ -128,8 +132,10 @@ class Document extends AbstractUpdateAction /** * @param string $key + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Document + * + * @return $this */ public function remove($key) { @@ -142,12 +148,14 @@ class Document extends AbstractUpdateAction } /** - * Adds the given key/value pair to the document + * Adds the given key/value pair to the document. * * @deprecated - * @param string $key Document entry key - * @param mixed $value Document entry value - * @return \Elastica\Document + * + * @param string $key Document entry key + * @param mixed $value Document entry value + * + * @return $this */ public function add($key, $value) { @@ -155,7 +163,7 @@ class Document extends AbstractUpdateAction } /** - * Adds a file to the index + * Adds a file to the index. * * To use this feature you have to call the following command in the * elasticsearch directory: @@ -165,17 +173,18 @@ class Document extends AbstractUpdateAction * This installs the tika file analysis plugin. More infos about supported formats * can be found here: {@link http://tika.apache.org/0.7/formats.html} * - * @param string $key Key to add the file to - * @param string $filepath Path to add the file - * @param string $mimeType OPTIONAL Header mime type - * @return \Elastica\Document + * @param string $key Key to add the file to + * @param string $filepath Path to add the file + * @param string $mimeType OPTIONAL Header mime type + * + * @return $this */ public function addFile($key, $filepath, $mimeType = '') { $value = base64_encode(file_get_contents($filepath)); if (!empty($mimeType)) { - $value = array('_content_type' => $mimeType, '_name' => $filepath, 'content' => $value,); + $value = array('_content_type' => $mimeType, '_name' => $filepath, '_content' => $value); } $this->set($key, $value); @@ -184,11 +193,12 @@ class Document extends AbstractUpdateAction } /** - * Add file content + * Add file content. + * + * @param string $key Document key + * @param string $content Raw file content * - * @param string $key Document key - * @param string $content Raw file content - * @return \Elastica\Document + * @return $this */ public function addFileContent($key, $content) { @@ -196,19 +206,21 @@ class Document extends AbstractUpdateAction } /** - * Adds a geopoint to the document + * Adds a geopoint to the document. * * Geohashes are not yet supported * * @param string $key Field key * @param float $latitude Latitude value * @param float $longitude Longitude value - * @link http://www.elasticsearch.org/guide/reference/mapping/geo-point-type.html - * @return \Elastica\Document + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html + * + * @return $this */ public function addGeoPoint($key, $latitude, $longitude) { - $value = array('lat' => $latitude, 'lon' => $longitude,); + $value = array('lat' => $latitude, 'lon' => $longitude); $this->set($key, $value); @@ -216,10 +228,11 @@ class Document extends AbstractUpdateAction } /** - * Overwrites the current document data with the given data + * Overwrites the current document data with the given data. * - * @param array|string $data Data array - * @return \Elastica\Document + * @param array|string $data Data array + * + * @return $this */ public function setData($data) { @@ -229,7 +242,7 @@ class Document extends AbstractUpdateAction } /** - * Returns the document data + * Returns the document data. * * @return array|string Document data */ @@ -239,36 +252,41 @@ class Document extends AbstractUpdateAction } /** + * @deprecated + * * @param \Elastica\Script $data + * * @throws NotImplementedException - * @deprecated */ public function setScript($data) { - throw new NotImplementedException("setScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate"); + throw new NotImplementedException('setScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate'); } /** * @throws NotImplementedException + * * @deprecated */ public function getScript() { - throw new NotImplementedException("getScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate"); + throw new NotImplementedException('getScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate'); } /** * @throws NotImplementedException + * * @deprecated */ public function hasScript() { - throw new NotImplementedException("hasScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate"); + throw new NotImplementedException('hasScript() is no longer available as of 0.90.2. See http://elastica.io/migration/0.90.2/upsert.html to migrate'); } /** * @param bool $value - * @return \Elastica\Document + * + * @return $this */ public function setDocAsUpsert($value) { @@ -278,7 +296,7 @@ class Document extends AbstractUpdateAction } /** - * @return boolean + * @return bool */ public function getDocAsUpsert() { @@ -287,6 +305,7 @@ class Document extends AbstractUpdateAction /** * @param bool $autoPopulate + * * @return $this */ public function setAutoPopulate($autoPopulate = true) @@ -305,7 +324,8 @@ class Document extends AbstractUpdateAction } /** - * Returns the document as an array + * Returns the document as an array. + * * @return array */ public function toArray() @@ -317,9 +337,11 @@ class Document extends AbstractUpdateAction } /** - * @param array|\Elastica\Document $data + * @param array|\Elastica\Document $data + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Document + * + * @return self */ public static function create($data) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/Response/ActionException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/Response/ActionException.php index 6500e040..5db0e49f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/Response/ActionException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/Response/ActionException.php @@ -1,10 +1,8 @@ <?php - namespace Elastica\Exception\Bulk\Response; -use Elastica\Exception\BulkException; -use Elastica\Bulk\Action; use Elastica\Bulk\Response; +use Elastica\Exception\BulkException; class ActionException extends BulkException { @@ -41,6 +39,7 @@ class ActionException extends BulkException /** * @param \Elastica\Bulk\Response $response + * * @return string */ public function getErrorMessage(Response $response) @@ -51,13 +50,13 @@ class ActionException extends BulkException $path = ''; if (isset($data['_index'])) { - $path.= '/' . $data['_index']; + $path .= '/'.$data['_index']; } if (isset($data['_type'])) { - $path.= '/' . $data['_type']; + $path .= '/'.$data['_type']; } if (isset($data['_id'])) { - $path.= '/' . $data['_id']; + $path .= '/'.$data['_id']; } $message = "$opType: $path caused $error"; diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/ResponseException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/ResponseException.php index 9df1b3e8..54b5702b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/ResponseException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/ResponseException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception\Bulk; use Elastica\Bulk\ResponseSet; @@ -7,16 +6,11 @@ use Elastica\Exception\Bulk\Response\ActionException; use Elastica\Exception\BulkException; /** - * Bulk Response exception - * - * @category Xodoa - * @package Elastica + * Bulk Response exception. */ class ResponseException extends BulkException { /** - * Response - * * @var \Elastica\Bulk\ResponseSet ResponseSet object */ protected $_responseSet; @@ -27,7 +21,7 @@ class ResponseException extends BulkException protected $_actionExceptions = array(); /** - * Construct Exception + * Construct Exception. * * @param \Elastica\Bulk\ResponseSet $responseSet */ @@ -35,8 +29,8 @@ class ResponseException extends BulkException { $this->_init($responseSet); - $message = 'Error in one or more bulk request actions:' . PHP_EOL . PHP_EOL; - $message.= $this->getActionExceptionsAsString(); + $message = 'Error in one or more bulk request actions:'.PHP_EOL.PHP_EOL; + $message .= $this->getActionExceptionsAsString(); parent::__construct($message); } @@ -56,7 +50,7 @@ class ResponseException extends BulkException } /** - * Returns bulk response set object + * Returns bulk response set object. * * @return \Elastica\Bulk\ResponseSet */ @@ -66,7 +60,7 @@ class ResponseException extends BulkException } /** - * Returns array of failed actions + * Returns array of failed actions. * * @return array Array of failed actions */ @@ -96,8 +90,9 @@ class ResponseException extends BulkException { $message = ''; foreach ($this->getActionExceptions() as $actionException) { - $message.= $actionException->getMessage() . PHP_EOL; + $message .= $actionException->getMessage().PHP_EOL; } + return $message; } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/UdpException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/UdpException.php index 0b2d4d2e..e332b92f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/UdpException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Bulk/UdpException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception\Bulk; use Elastica\Exception\BulkException; diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/BulkException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/BulkException.php index 6d384556..121cf557 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/BulkException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/BulkException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception; class BulkException extends \RuntimeException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/ClientException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/ClientException.php index 00efd67d..66af363d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/ClientException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/ClientException.php @@ -1,12 +1,9 @@ <?php - namespace Elastica\Exception; /** - * Client exception + * Client exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class ClientException extends \RuntimeException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/GuzzleException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/GuzzleException.php index 645c0eff..614ad139 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/GuzzleException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/GuzzleException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception\Connection; use Elastica\Exception\ConnectionException; @@ -8,9 +7,8 @@ use Elastica\Response; use GuzzleHttp\Exception\TransferException; /** - * Transport exception + * Transport exception. * - * @package Elastica * @author Milan Magudia <milan@magudia.com> */ class GuzzleException extends ConnectionException @@ -22,8 +20,8 @@ class GuzzleException extends ConnectionException /** * @param \GuzzleHttp\Exception\TransferException $guzzleException - * @param \Elastica\Request $request - * @param \Elastica\Response $response + * @param \Elastica\Request $request + * @param \Elastica\Response $response */ public function __construct(TransferException $guzzleException, Request $request = null, Response $response = null) { @@ -34,6 +32,7 @@ class GuzzleException extends ConnectionException /** * @param \GuzzleHttp\Exception\TransferException $guzzleException + * * @return string */ public function getErrorMessage(TransferException $guzzleException) diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/HttpException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/HttpException.php index 2a36fe48..28e78e77 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/HttpException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/HttpException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception\Connection; use Elastica\Exception\ConnectionException; @@ -7,25 +6,23 @@ use Elastica\Request; use Elastica\Response; /** - * Connection exception + * Connection exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class HttpException extends ConnectionException { /** - * Error code / message + * Error code / message. * * @var string Error code / message */ protected $_error = 0; /** - * Construct Exception + * Construct Exception. * - * @param string $error Error + * @param string $error Error * @param \Elastica\Request $request * @param \Elastica\Response $response */ @@ -39,22 +36,23 @@ class HttpException extends ConnectionException /** * Returns the error message corresponding to the error code - * cUrl error code reference can be found here {@link http://curl.haxx.se/libcurl/c/libcurl-errors.html} + * cUrl error code reference can be found here {@link http://curl.haxx.se/libcurl/c/libcurl-errors.html}. + * + * @param string $error Error code * - * @param string $error Error code * @return string Error message */ public function getErrorMessage($error) { switch ($error) { case CURLE_UNSUPPORTED_PROTOCOL: - $error = "Unsupported protocol"; + $error = 'Unsupported protocol'; break; case CURLE_FAILED_INIT: - $error = "Internal cUrl error?"; + $error = 'Internal cUrl error?'; break; case CURLE_URL_MALFORMAT: - $error = "Malformed URL"; + $error = 'Malformed URL'; break; case CURLE_COULDNT_RESOLVE_PROXY: $error = "Couldn't resolve proxy"; @@ -66,10 +64,10 @@ class HttpException extends ConnectionException $error = "Couldn't connect to host, Elasticsearch down?"; break; case 28: - $error = "Operation timed out"; + $error = 'Operation timed out'; break; default: - $error = "Unknown error:" . $error; + $error = 'Unknown error:'.$error; break; } @@ -77,7 +75,7 @@ class HttpException extends ConnectionException } /** - * Return Error code / message + * Return Error code / message. * * @return string Error code / message */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/MemcacheException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/MemcacheException.php new file mode 100644 index 00000000..24181379 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/MemcacheException.php @@ -0,0 +1,13 @@ +<?php +namespace Elastica\Exception\Connection; + +use Elastica\Exception\ConnectionException; + +/** + * Transport exception. + * + * @author Igor Denisenko <im.denisenko@yahoo.com> + */ +class MemcacheException extends ConnectionException +{ +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/ThriftException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/ThriftException.php index 0ca331c7..499cbd7d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/ThriftException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/Connection/ThriftException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception\Connection; use Elastica\Exception\ConnectionException; @@ -8,10 +7,8 @@ use Elastica\Response; use Thrift\Exception\TException; /** - * Transport exception + * Transport exception. * - * @category Xodoa - * @package Elastica * @author Mikhail Shamin <munk13@gmail.com> */ class ThriftException extends ConnectionException @@ -23,8 +20,8 @@ class ThriftException extends ConnectionException /** * @param \Thrift\Exception\TException $thriftException - * @param \Elastica\Request $request - * @param \Elastica\Response $response + * @param \Elastica\Request $request + * @param \Elastica\Response $response */ public function __construct(TException $thriftException, Request $request = null, Response $response = null) { @@ -35,6 +32,7 @@ class ThriftException extends ConnectionException /** * @param \Thrift\Exception\TException $thriftException + * * @return string */ public function getErrorMessage(TException $thriftException) diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/ConnectionException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/ConnectionException.php index 35d60472..b2376d2f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/ConnectionException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/ConnectionException.php @@ -1,37 +1,30 @@ <?php - namespace Elastica\Exception; use Elastica\Request; use Elastica\Response; /** - * Connection exception + * Connection exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class ConnectionException extends \RuntimeException implements ExceptionInterface { /** - * Request - * * @var \Elastica\Request Request object */ protected $_request; /** - * Response - * * @var \Elastica\Response Response object */ protected $_response; /** - * Construct Exception + * Construct Exception. * - * @param string $message Message + * @param string $message Message * @param \Elastica\Request $request * @param \Elastica\Response $response */ @@ -44,7 +37,7 @@ class ConnectionException extends \RuntimeException implements ExceptionInterfac } /** - * Returns request object + * Returns request object. * * @return \Elastica\Request Request object */ @@ -54,7 +47,7 @@ class ConnectionException extends \RuntimeException implements ExceptionInterfac } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/ElasticsearchException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/ElasticsearchException.php index 0f7509f9..59cca0c6 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/ElasticsearchException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/ElasticsearchException.php @@ -1,37 +1,29 @@ <?php - namespace Elastica\Exception; /** - * Elasticsearch exception + * Elasticsearch exception. * - * @category Xodoa - * @package Elastica * @author Ian Babrou <ibobrik@gmail.com> */ -class ElasticsearchException extends \Exception +class ElasticsearchException extends \Exception implements ExceptionInterface { - const REMOTE_TRANSPORT_EXCEPTION = 'RemoteTransportException'; /** - * Elasticsearch exception name - * - * @var string|null + * @var string|null Elasticsearch exception name */ private $_exception; /** - * Whether exception was local to server node or remote - * - * @var bool + * @var bool Whether exception was local to server node or remote */ private $_isRemote = false; /** - * Constructs elasticsearch exception + * Constructs elasticsearch exception. * - * @param int $code Error code + * @param int $code Error code * @param string $error Error message from elasticsearch */ public function __construct($code, $error) @@ -41,7 +33,7 @@ class ElasticsearchException extends \Exception } /** - * Parse error message from elasticsearch + * Parse error message from elasticsearch. * * @param string $error Error message */ @@ -62,9 +54,10 @@ class ElasticsearchException extends \Exception } /** - * Extract exception name from error response + * Extract exception name from error response. * * @param string $error + * * @return null|string */ protected function _extractException($error) @@ -72,12 +65,12 @@ class ElasticsearchException extends \Exception if (preg_match('/^(\w+)\[.*\]/', $error, $matches)) { return $matches[1]; } else { - return null; + return; } } /** - * Returns elasticsearch exception name + * Returns elasticsearch exception name. * * @return string|null */ @@ -87,7 +80,7 @@ class ElasticsearchException extends \Exception } /** - * Returns whether exception was local to server node or remote + * Returns whether exception was local to server node or remote. * * @return bool */ @@ -95,5 +88,4 @@ class ElasticsearchException extends \Exception { return $this->_isRemote; } - } diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/ExceptionInterface.php b/vendor/ruflin/elastica/lib/Elastica/Exception/ExceptionInterface.php index 746c9c81..02f43092 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/ExceptionInterface.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/ExceptionInterface.php @@ -1,12 +1,9 @@ <?php - namespace Elastica\Exception; /** - * General Elastica exception interface + * General Elastica exception interface. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ interface ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/InvalidException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/InvalidException.php index ff4a4cd3..996a9389 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/InvalidException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/InvalidException.php @@ -1,12 +1,9 @@ <?php - namespace Elastica\Exception; /** - * Invalid exception + * Invalid exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class InvalidException extends \InvalidArgumentException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/JSONParseException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/JSONParseException.php index 3cf39911..010adf45 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/JSONParseException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/JSONParseException.php @@ -1,11 +1,8 @@ <?php - namespace Elastica\Exception; /** - * JSON Parse exception - * - * @package Elastica + * JSON Parse exception. */ class JSONParseException extends \RuntimeException implements ExceptionInterface { diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/NotFoundException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/NotFoundException.php index 539b01c2..a2897fd7 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/NotFoundException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/NotFoundException.php @@ -1,12 +1,9 @@ <?php - namespace Elastica\Exception; /** - * Not found exception + * Not found exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class NotFoundException extends \RuntimeException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/NotImplementedException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/NotImplementedException.php index 49d3918b..591417b6 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/NotImplementedException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/NotImplementedException.php @@ -1,14 +1,11 @@ <?php - namespace Elastica\Exception; /** - * Not implemented exception + * Not implemented exception. * * Is thrown if a function or feature is not implemented yet * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class NotImplementedException extends \BadMethodCallException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/PartialShardFailureException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/PartialShardFailureException.php index f853bf96..bb3fa44a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/PartialShardFailureException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/PartialShardFailureException.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Exception; use Elastica\JSON; @@ -7,19 +6,16 @@ use Elastica\Request; use Elastica\Response; /** - * Partial shard failure exception + * Partial shard failure exception. * - * @category Xodoa - * @package Elastica * @author Ian Babrou <ibobrik@gmail.com> */ class PartialShardFailureException extends ResponseException { - /** - * Construct Exception + * Construct Exception. * - * @param \Elastica\Request $request + * @param \Elastica\Request $request * @param \Elastica\Response $response */ public function __construct(Request $request, Response $response) @@ -29,5 +25,4 @@ class PartialShardFailureException extends ResponseException $shardsStatistics = $response->getShardsStatistics(); $this->message = JSON::stringify($shardsStatistics['failed']); } - } diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/QueryBuilderException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/QueryBuilderException.php new file mode 100644 index 00000000..ae03c831 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/QueryBuilderException.php @@ -0,0 +1,11 @@ +<?php +namespace Elastica\Exception; + +/** + * QueryBuilder exception. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class QueryBuilderException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/ResponseException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/ResponseException.php index 63244487..57502307 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/ResponseException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/ResponseException.php @@ -1,37 +1,30 @@ <?php - namespace Elastica\Exception; use Elastica\Request; use Elastica\Response; /** - * Response exception + * Response exception. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class ResponseException extends \RuntimeException implements ExceptionInterface { /** - * Request - * * @var \Elastica\Request Request object */ protected $_request = null; /** - * Response - * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Construct Exception + * Construct Exception. * - * @param \Elastica\Request $request + * @param \Elastica\Request $request * @param \Elastica\Response $response */ public function __construct(Request $request, Response $response) @@ -42,7 +35,7 @@ class ResponseException extends \RuntimeException implements ExceptionInterface } /** - * Returns request object + * Returns request object. * * @return \Elastica\Request Request object */ @@ -52,7 +45,7 @@ class ResponseException extends \RuntimeException implements ExceptionInterface } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -62,14 +55,15 @@ class ResponseException extends \RuntimeException implements ExceptionInterface } /** - * Returns elasticsearch exception + * Returns elasticsearch exception. * * @return ElasticsearchException */ - public function getElasticsearchException() { + public function getElasticsearchException() + { $response = $this->getResponse(); $transfer = $response->getTransferInfo(); - $code = array_key_exists('http_code', $transfer) ? $transfer['http_code'] : 0; + $code = array_key_exists('http_code', $transfer) ? $transfer['http_code'] : 0; return new ElasticsearchException($code, $response->getError()); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Exception/RuntimeException.php b/vendor/ruflin/elastica/lib/Elastica/Exception/RuntimeException.php index 5ee420e1..af18faff 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Exception/RuntimeException.php +++ b/vendor/ruflin/elastica/lib/Elastica/Exception/RuntimeException.php @@ -1,12 +1,9 @@ <?php - namespace Elastica\Exception; /** - * Client exception + * Client exception. * - * @category Xodoa - * @package Elastica * @author Mikhail Shamin <munk13@gmail.com> */ class RuntimeException extends \RuntimeException implements ExceptionInterface diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/AbstractFacet.php b/vendor/ruflin/elastica/lib/Elastica/Facet/AbstractFacet.php index 25cee812..743cefe1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/AbstractFacet.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/AbstractFacet.php @@ -1,30 +1,27 @@ <?php - namespace Elastica\Facet; -use Elastica\Param; -use Elastica\Filter\AbstractFilter; use Elastica\Exception\InvalidException; +use Elastica\Filter\AbstractFilter; +use Elastica\Param; /** - * Abstract facet object. Should be extended by all facet types + * Abstract facet object. Should be extended by all facet types. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> * @author Jasper van Wanrooy <jasper@vanwanrooy.net> + * + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ abstract class AbstractFacet extends Param { /** - * Holds the name of the facet. - * @var string + * @var string Holds the name of the facet. */ protected $_name = ''; /** - * Holds all facet parameters. - * @var array + * @var array Holds all facet parameters. */ protected $_facet = array(); @@ -42,9 +39,11 @@ abstract class AbstractFacet extends Param * Sets the name of the facet. It is automatically set by * the constructor. * - * @param string $name The name of the facet. - * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Facet\AbstractFacet + * @param string $name The name of the facet. + * + * @throws \Elastica\Exception\InvalidException If name is empty + * + * @return $this */ public function setName($name) { @@ -69,8 +68,9 @@ abstract class AbstractFacet extends Param /** * Sets a filter for this facet. * - * @param \Elastica\Filter\AbstractFilter $filter A filter to apply on the facet. - * @return \Elastica\Facet\AbstractFacet + * @param \Elastica\Filter\AbstractFilter $filter A filter to apply on the facet. + * + * @return $this */ public function setFilter(AbstractFilter $filter) { @@ -82,8 +82,9 @@ abstract class AbstractFacet extends Param * current search query. When not set, it defaults to the * Elasticsearch default value. * - * @param bool $global Flag to either run the facet globally. - * @return \Elastica\Facet\AbstractFacet + * @param bool $global Flag to either run the facet globally. + * + * @return $this */ public function setGlobal($global = true) { @@ -91,10 +92,11 @@ abstract class AbstractFacet extends Param } /** - * Sets the path to the nested document + * Sets the path to the nested document. * - * @param string $nestedPath Nested path - * @return \Elastica\Facet\AbstractFacet + * @param string $nestedPath Nested path + * + * @return $this */ public function setNested($nestedPath) { @@ -102,10 +104,11 @@ abstract class AbstractFacet extends Param } /** - * Sets the scope + * Sets the scope. + * + * @param string $scope Scope * - * @param string $scope Scope - * @return \Elastica\Facet\AbstractFacet + * @return $this */ public function setScope($scope) { @@ -128,9 +131,10 @@ abstract class AbstractFacet extends Param * Sets a param for the facet. Each facet implementation needs to take * care of handling their own params. * - * @param string $key The key of the param to set. - * @param mixed $value The value of the param. - * @return \Elastica\Facet\AbstractFacet + * @param string $key The key of the param to set. + * @param mixed $value The value of the param. + * + * @return $this */ protected function _setFacetParam($key, $value) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/DateHistogram.php b/vendor/ruflin/elastica/lib/Elastica/Facet/DateHistogram.php index 803f54a3..c47eddab 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/DateHistogram.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/DateHistogram.php @@ -1,23 +1,23 @@ <?php - namespace Elastica\Facet; /** * Implements the Date Histogram facet. * - * @category Xodoa - * @package Elastica * @author Raul Martinez Jr <juneym@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/date-histogram-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-date-histogram-facet.html * @link https://github.com/elasticsearch/elasticsearch/issues/591 + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class DateHistogram extends Histogram { /** - * Set the time_zone parameter + * Set the time_zone parameter. + * + * @param string $tzOffset * - * @param string $tzOffset - * @return \Elastica\Facet\DateHistogram + * @return $this */ public function setTimezone($tzOffset) { @@ -25,16 +25,30 @@ class DateHistogram extends Histogram } /** + * Set the factor parameter. + * + * @param int $factor + * + * @return $this + */ + public function setFactor($factor) + { + return $this->setParam('factor', $factor); + } + + /** * Creates the full facet definition, which includes the basic * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @throws \Elastica\Exception\InvalidException When the right fields haven't been set. + * * @return array */ public function toArray() { - /** + /* * Set the range in the abstract as param. */ $this->_setFacetParam('date_histogram', $this->_params); diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Filter.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Filter.php index ed6f28b7..26f032b4 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Filter.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Filter.php @@ -1,24 +1,24 @@ <?php - namespace Elastica\Facet; use Elastica\Filter\AbstractFilter; /** - * Filter facet + * Filter facet. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/filter-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-filter-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Filter extends AbstractFacet { /** * Set the filter for the facet. * - * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Facet\Filter + * @param \Elastica\Filter\AbstractFilter $filter + * + * @return $this */ public function setFilter(AbstractFilter $filter) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/GeoCluster.php b/vendor/ruflin/elastica/lib/Elastica/Facet/GeoCluster.php index a6f5e9ed..71fa5094 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/GeoCluster.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/GeoCluster.php @@ -1,41 +1,49 @@ <?php - namespace Elastica\Facet; /** * Implements the Geo Cluster facet. * - * @category Xodoa - * @package Elastica * @author Konstantin Nikiforov <konstantin.nikiforov@gmail.com> + * * @link https://github.com/zenobase/geocluster-facet + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ -class GeoCluster extends AbstractFacet { - +class GeoCluster extends AbstractFacet +{ /** * @param string $fieldName + * * @return $this */ - public function setField($fieldName) { + public function setField($fieldName) + { $this->setParam('field', $fieldName); + return $this; } /** - * @param double $factor + * @param float $factor + * * @return $this */ - public function setFactor($factor){ + public function setFactor($factor) + { $this->setParam('factor', $factor); + return $this; } /** - * @param boolean $showIds + * @param bool $showIds + * * @return $this */ - public function setShowIds($showIds) { + public function setShowIds($showIds) + { $this->setParam('showIds', $showIds); + return $this; } @@ -44,11 +52,15 @@ class GeoCluster extends AbstractFacet { * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @throws \Elastica\Exception\InvalidException When the right fields haven't been set. + * * @return array */ - public function toArray(){ - $this->_setFacetParam ('geo_cluster', $this->_params); + public function toArray() + { + $this->_setFacetParam('geo_cluster', $this->_params); + return parent::toArray(); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/GeoDistance.php b/vendor/ruflin/elastica/lib/Elastica/Facet/GeoDistance.php index 35537986..664d33a6 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/GeoDistance.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/GeoDistance.php @@ -1,14 +1,13 @@ <?php - namespace Elastica\Facet; /** * Implements the Geo Distance facet. * - * @category Xodoa - * @package Elastica * @author Gerard A. Matthew <gerard.matthew@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/geo-distance-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-geo-distance-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class GeoDistance extends AbstractFacet { @@ -20,10 +19,11 @@ class GeoDistance extends AbstractFacet * array('from' => 20, 'to' => 70), * array('from' => 70, 'to' => 120), * array('from' => 150) - * ) + * ). + * + * @param array $ranges Numerical array with range definitions. * - * @param array $ranges Numerical array with range definitions. - * @return \Elastica\Facet\GeoDistance + * @return $this */ public function setRanges(array $ranges) { @@ -33,16 +33,17 @@ class GeoDistance extends AbstractFacet /** * Set the relative GeoPoint for the facet. * - * @param string $typeField index type and field e.g foo.bar - * @param float $latitude - * @param float $longitude - * @return \Elastica\Facet\GeoDistance + * @param string $typeField index type and field e.g foo.bar + * @param float $latitude + * @param float $longitude + * + * @return $this */ public function setGeoPoint($typeField, $latitude, $longitude) { return $this->setParam($typeField, array( - "lat" => $latitude, - "lon" => $longitude, + 'lat' => $latitude, + 'lon' => $longitude, )); } @@ -51,15 +52,17 @@ class GeoDistance extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @throws \Elastica\Exception\InvalidException When the right fields haven't been set. + * * @return array */ public function toArray() { - /** + /* * Set the geo_distance in the abstract as param. */ - $this->_setFacetParam ('geo_distance', $this->_params); + $this->_setFacetParam('geo_distance', $this->_params); return parent::toArray(); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Histogram.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Histogram.php index 68be6757..1b76ea89 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Histogram.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Histogram.php @@ -1,22 +1,22 @@ <?php - namespace Elastica\Facet; /** * Implements the Histogram facet. * - * @category Xodoa - * @package Elastica * @author Raul Martinez Jr <juneym@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/histogram-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-histogram-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Histogram extends AbstractFacet { /** - * Sets the field for histogram + * Sets the field for histogram. + * + * @param string $field The name of the field for the histogram * - * @param string $field The name of the field for the histogram - * @return \Elastica\Facet\Histogram + * @return $this */ public function setField($field) { @@ -24,10 +24,11 @@ class Histogram extends AbstractFacet } /** - * Set the value for interval + * Set the value for interval. * - * @param string $interval - * @return \Elastica\Facet\Histogram + * @param string $interval + * + * @return $this */ public function setInterval($interval) { @@ -35,11 +36,12 @@ class Histogram extends AbstractFacet } /** - * Set the fields for key_field and value_field + * Set the fields for key_field and value_field. + * + * @param string $keyField Key field + * @param string $valueField Value field * - * @param string $keyField Key field - * @param string $valueField Value field - * @return \Elastica\Facet\Histogram + * @return $this */ public function setKeyValueFields($keyField, $valueField) { @@ -49,9 +51,10 @@ class Histogram extends AbstractFacet /** * Sets the key and value for this facet by script. * - * @param string $keyScript Script to check whether it falls into the range. - * @param string $valueScript Script to use for statistical calculations. - * @return \Elastica\Facet\Histogram + * @param string $keyScript Script to check whether it falls into the range. + * @param string $valueScript Script to use for statistical calculations. + * + * @return $this */ public function setKeyValueScripts($keyScript, $valueScript) { @@ -60,10 +63,11 @@ class Histogram extends AbstractFacet } /** - * Set the "params" essential to the a script + * Set the "params" essential to the a script. + * + * @param array $params Associative array (key/value pair) * - * @param array $params Associative array (key/value pair) - * @return \Elastica\Facet\Histogram + * @return $this */ public function setScriptParams(array $params) { @@ -75,12 +79,14 @@ class Histogram extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @throws \Elastica\Exception\InvalidException When the right fields haven't been set. + * * @return array */ public function toArray() { - /** + /* * Set the range in the abstract as param. */ $this->_setFacetParam('histogram', $this->_params); diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Query.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Query.php index d43a2375..522090d5 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Query.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Query.php @@ -1,24 +1,24 @@ <?php - namespace Elastica\Facet; use Elastica\Query\AbstractQuery; /** - * Query facet + * Query facet. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/query-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-query-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Query extends AbstractFacet { /** * Set the query for the facet. * - * @param \Elastica\Query\AbstractQuery $query - * @return \Elastica\Facet\Query + * @param \Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery(AbstractQuery $query) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Range.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Range.php index 194f611a..f81caf3d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Range.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Range.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Facet; use Elastica\Exception\InvalidException; @@ -7,18 +6,19 @@ use Elastica\Exception\InvalidException; /** * Implements the range facet. * - * @category Xodoa - * @package Elastica * @author Jasper van Wanrooy <jasper@vanwanrooy.net> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/range-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-range-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Range extends AbstractFacet { /** * Sets the field for the range. * - * @param string $field The name of the field for range. - * @return \Elastica\Facet\Range + * @param string $field The name of the field for range. + * + * @return $this */ public function setField($field) { @@ -28,9 +28,10 @@ class Range extends AbstractFacet /** * Sets the fields by their separate key and value fields. * - * @param string $keyField The key_field param for the range. - * @param string $valueField The key_value param for the range. - * @return \Elastica\Facet\Range + * @param string $keyField The key_field param for the range. + * @param string $valueField The key_value param for the range. + * + * @return $this */ public function setKeyValueFields($keyField, $valueField) { @@ -44,7 +45,7 @@ class Range extends AbstractFacet * @param string $keyScript Script to check whether it falls into the range. * @param string $valueScript Script to use for statistical calculations. * - * @return \Elastica\Facet\Range + * @return $this */ public function setKeyValueScripts($keyScript, $valueScript) { @@ -59,10 +60,11 @@ class Range extends AbstractFacet * array('from' => 20, 'to' 70), * array('from' => 70, 'to' => 120), * array('from' => 150) - * ) + * ). * - * @param array $ranges Numerical array with range definitions. - * @return \Elastica\Facet\Range + * @param array $ranges Numerical array with range definitions. + * + * @return $this */ public function setRanges(array $ranges) { @@ -72,9 +74,10 @@ class Range extends AbstractFacet /** * Adds a range to the range facet. * - * @param mixed $from The from for the range. - * @param mixed $to The to for the range. - * @return \Elastica\Facet\Range + * @param mixed $from The from for the range. + * @param mixed $to The to for the range. + * + * @return $this */ public function addRange($from = null, $to = null) { @@ -99,12 +102,14 @@ class Range extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @throws \Elastica\Exception\InvalidException When the right fields haven't been set. + * * @return array */ public function toArray() { - /** + /* * Check the facet for validity. * There are three ways to set the key and value field for the range: * - a single field for both key and value; or @@ -128,7 +133,7 @@ class Range extends AbstractFacet throw new InvalidException('Either field, key_field and key_value or key_script and value_script should be set.'); } - /** + /* * Set the range in the abstract as param. */ $this->_setFacetParam('range', $this->_params); diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Statistical.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Statistical.php index 71507b8f..bb4eef8b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Statistical.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Statistical.php @@ -1,22 +1,22 @@ <?php - namespace Elastica\Facet; /** * Implements the statistical facet. * - * @category Xodoa - * @package Elastica * @author Robert Katzki <robert@katzki.de> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/statistical-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-statistical-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Statistical extends AbstractFacet { /** * Sets the field for the statistical query. * - * @param string $field The field name for the statistical query. - * @return \Elastica\Facet\Statistical + * @param string $field The field name for the statistical query. + * + * @return $this */ public function setField($field) { @@ -26,8 +26,9 @@ class Statistical extends AbstractFacet /** * Sets multiple fields for the statistical query. * - * @param array $fields Numerical array with the fields for the statistical query. - * @return \Elastica\Facet\Statistical + * @param array $fields Numerical array with the fields for the statistical query. + * + * @return $this */ public function setFields(array $fields) { @@ -35,10 +36,11 @@ class Statistical extends AbstractFacet } /** - * Sets a script to calculate statistical information + * Sets a script to calculate statistical information. + * + * @param string $script The script to do calculations on the statistical values * - * @param string $script The script to do calculations on the statistical values - * @return \Elastica\Facet\Statistical + * @return $this */ public function setScript($script) { @@ -50,6 +52,7 @@ class Statistical extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @return array */ public function toArray() diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/Terms.php b/vendor/ruflin/elastica/lib/Elastica/Facet/Terms.php index c1dab800..6af8867b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/Terms.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/Terms.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Facet; use Elastica\Exception\InvalidException; @@ -8,11 +7,11 @@ use Elastica\Script; /** * Implements the terms facet. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> * @author Jasper van Wanrooy <jasper@vanwanrooy.net> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/terms-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-terms-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class Terms extends AbstractFacet { @@ -27,8 +26,9 @@ class Terms extends AbstractFacet /** * Sets the field for the terms. * - * @param string $field The field name for the terms. - * @return \Elastica\Facet\Terms + * @param string $field The field name for the terms. + * + * @return $this */ public function setField($field) { @@ -38,8 +38,9 @@ class Terms extends AbstractFacet /** * Sets the script for the term. * - * @param string $script The script for the term. - * @return \Elastica\Facet\Terms + * @param string $script The script for the term. + * + * @return $this */ public function setScript($script) { @@ -54,8 +55,9 @@ class Terms extends AbstractFacet /** * Sets multiple fields for the terms. * - * @param array $fields Numerical array with the fields for the terms. - * @return \Elastica\Facet\Terms + * @param array $fields Numerical array with the fields for the terms. + * + * @return $this */ public function setFields(array $fields) { @@ -66,8 +68,9 @@ class Terms extends AbstractFacet * Sets the flag to return all available terms. When they * don't have a hit, they have a count of zero. * - * @param bool $allTerms Flag to fetch all terms. - * @return \Elastica\Facet\Terms + * @param bool $allTerms Flag to fetch all terms. + * + * @return $this */ public function setAllTerms($allTerms) { @@ -78,14 +81,16 @@ class Terms extends AbstractFacet * Sets the ordering type for this facet. Elasticsearch * internal default is count. * - * @param string $type The order type to set use for sorting of the terms. + * @param string $type The order type to set use for sorting of the terms. + * * @throws \Elastica\Exception\InvalidException When an invalid order type was set. - * @return \Elastica\Facet\Terms + * + * @return $this */ public function setOrder($type) { if (!in_array($type, $this->_orderTypes)) { - throw new InvalidException('Invalid order type: ' . $type); + throw new InvalidException('Invalid order type: '.$type); } return $this->setParam('order', $type); @@ -94,8 +99,9 @@ class Terms extends AbstractFacet /** * Set an array with terms which are omitted in the search. * - * @param array $exclude Numerical array which includes all terms which needs to be ignored. - * @return \Elastica\Facet\Terms + * @param array $exclude Numerical array which includes all terms which needs to be ignored. + * + * @return $this */ public function setExclude(array $exclude) { @@ -105,8 +111,9 @@ class Terms extends AbstractFacet /** * Sets the amount of terms to be returned. * - * @param int $size The amount of terms to be returned. - * @return \Elastica\Facet\Terms + * @param int $size The amount of terms to be returned. + * + * @return $this */ public function setSize($size) { @@ -118,6 +125,7 @@ class Terms extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @return array */ public function toArray() diff --git a/vendor/ruflin/elastica/lib/Elastica/Facet/TermsStats.php b/vendor/ruflin/elastica/lib/Elastica/Facet/TermsStats.php index 61c6b39e..22d284c5 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Facet/TermsStats.php +++ b/vendor/ruflin/elastica/lib/Elastica/Facet/TermsStats.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Facet; use Elastica\Exception\InvalidException; @@ -7,14 +6,13 @@ use Elastica\Exception\InvalidException; /** * Implements the statistical facet on a per term basis. * - * @category Xodoa - * @package Elastica * @author Tom Michaelis <tom.michaelis@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/terms-stats-facet.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets-terms-stats-facet.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ class TermsStats extends AbstractFacet { - /** * Holds the types of ordering which are allowed * by Elasticsearch. @@ -23,63 +21,69 @@ class TermsStats extends AbstractFacet */ protected $_orderTypes = array('term', 'reverse_term', 'count', 'reverse_count', 'total', 'reverse_total', 'min', 'reverse_min', 'max', 'reverse_max', 'mean', - 'reverse_mean'); + 'reverse_mean', ); /** * Sets the key field for the query. * - * @param string $keyField The key field name for the query. - * @return \Elastica\Facet\TermsStats + * @param string $keyField The key field name for the query. + * + * @return $this */ - public function setKeyField( $keyField ) + public function setKeyField($keyField) { - return $this->setParam( 'key_field', $keyField ); + return $this->setParam('key_field', $keyField); } /** - * Sets a script to calculate statistical information on a per term basis + * Sets a script to calculate statistical information on a per term basis. + * + * @param string $valueScript The script to do calculations on the statistical values * - * @param string $valueScript The script to do calculations on the statistical values - * @return \Elastica\Facet\TermsStats + * @return $this */ - public function setValueScript( $valueScript ) + public function setValueScript($valueScript) { - return $this->setParam( 'value_script', $valueScript ); + return $this->setParam('value_script', $valueScript); } /** * Sets the ordering type for this facet. Elasticsearch * internal default is count. * - * @param string $type The order type to set use for sorting of the terms. + * @param string $type The order type to set use for sorting of the terms. + * * @throws \Elastica\Exception\InvalidException When an invalid order type was set. - * @return \Elastica\Facet\TermsStats + * + * @return $this */ public function setOrder($type) { if (!in_array($type, $this->_orderTypes)) { - throw new InvalidException('Invalid order type: ' . $type); + throw new InvalidException('Invalid order type: '.$type); } return $this->setParam('order', $type); } /** - * Sets a field to compute basic statistical results on + * Sets a field to compute basic statistical results on. + * + * @param string $valueField The field to compute statistical values for * - * @param string $valueField The field to compute statistical values for - * @return \Elastica\Facet\TermsStats + * @return $this */ - public function setValueField( $valueField ) + public function setValueField($valueField) { - return $this->setParam( 'value_field', $valueField ); + return $this->setParam('value_field', $valueField); } /** * Sets the amount of terms to be returned. * - * @param int $size The amount of terms to be returned. - * @return \Elastica\Facet\Terms + * @param int $size The amount of terms to be returned. + * + * @return $this */ public function setSize($size) { @@ -91,13 +95,13 @@ class TermsStats extends AbstractFacet * facet definition of the parent. * * @see \Elastica\Facet\AbstractFacet::toArray() + * * @return array */ public function toArray() { - $this->_setFacetParam( 'terms_stats', $this->_params ); + $this->_setFacetParam('terms_stats', $this->_params); return parent::toArray(); } - } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractFilter.php b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractFilter.php index 665f155f..7c7dc4f7 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractFilter.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractFilter.php @@ -1,25 +1,24 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; use Elastica\Param; /** - * Abstract filter object. Should be extended by all filter types + * Abstract filter object. Should be extended by all filter types. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filters.html */ abstract class AbstractFilter extends Param { /** - * Sets the filter cache + * Sets the filter cache. + * + * @param bool $cached Cached * - * @param boolean $cached Cached - * @return \Elastica\Filter\AbstractFilter + * @return $this */ public function setCached($cached = true) { @@ -27,11 +26,13 @@ abstract class AbstractFilter extends Param } /** - * Sets the filter cache key + * Sets the filter cache key. * - * @param string $cacheKey Cache key - * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Filter\AbstractFilter + * @param string $cacheKey Cache key + * + * @throws \Elastica\Exception\InvalidException If given key is empty + * + * @return $this */ public function setCacheKey($cacheKey) { @@ -45,10 +46,11 @@ abstract class AbstractFilter extends Param } /** - * Sets the filter name + * Sets the filter name. + * + * @param string $name Name * - * @param string $name Name - * @return \Elastica\Filter\AbstractFilter + * @return $this */ public function setName($name) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoDistance.php b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoDistance.php index 997ceab7..b208afb4 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoDistance.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoDistance.php @@ -1,25 +1,22 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; /** - * Geo distance filter + * Geo distance filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-distance-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-filter.html */ abstract class AbstractGeoDistance extends AbstractFilter { - const LOCATION_TYPE_GEOHASH = 'geohash'; const LOCATION_TYPE_LATLON = 'latlon'; /** - * Location type + * Location type. * * Decides if this filter uses latitude/longitude or geohash for the location. * Values are "latlon" or "geohash". @@ -29,38 +26,39 @@ abstract class AbstractGeoDistance extends AbstractFilter protected $_locationType = null; /** - * Key + * Key. * * @var string */ protected $_key = null; /** - * Latitude + * Latitude. * * @var float */ protected $_latitude = null; /** - * Longitude + * Longitude. * * @var float */ protected $_longitude = null; /** - * Geohash + * Geohash. * * @var string */ protected $_geohash = null; /** - * Create GeoDistance object + * Create GeoDistance object. + * + * @param string $key Key + * @param array|string $location Location as array or geohash: array('lat' => 48.86, 'lon' => 2.35) OR 'drm3btev3e86' * - * @param string $key Key - * @param array|string $location Location as array or geohash: array('lat' => 48.86, 'lon' => 2.35) OR 'drm3btev3e86' * @internal param string $distance Distance */ public function __construct($key, $location) @@ -71,8 +69,9 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @param string $key - * @return \Elastica\Filter\AbstractGeoDistance current filter + * @param string $key + * + * @return $this */ public function setKey($key) { @@ -82,9 +81,11 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @param array|string $location - * @return \Elastica\Filter\AbstractGeoDistance + * @param array|string $location + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function setLocation($location) { @@ -113,8 +114,9 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @param float $latitude - * @return \Elastica\Filter\AbstractGeoDistance current filter + * @param float $latitude + * + * @return $this */ public function setLatitude($latitude) { @@ -125,8 +127,9 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @param float $longitude - * @return \Elastica\Filter\AbstractGeoDistance current filter + * @param float $longitude + * + * @return $this */ public function setLongitude($longitude) { @@ -137,8 +140,9 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @param string $geohash - * @return \Elastica\Filter\AbstractGeoDistance current filter + * @param string $geohash + * + * @return $this */ public function setGeohash($geohash) { @@ -149,8 +153,9 @@ abstract class AbstractGeoDistance extends AbstractFilter } /** - * @return array|string * @throws \Elastica\Exception\InvalidException + * + * @return array|string */ protected function _getLocationData() { @@ -179,7 +184,10 @@ abstract class AbstractGeoDistance extends AbstractFilter /** * @see \Elastica\Param::toArray() + * * @throws \Elastica\Exception\InvalidException + * + * @return array */ public function toArray() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoShape.php b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoShape.php index 3585293b..4f5c0f93 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoShape.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractGeoShape.php @@ -1,32 +1,30 @@ <?php - namespace Elastica\Filter; /** - * geo_shape filter + * geo_shape filter. * * Filter pre-indexed shape definitions * - * @category Xodoa - * @package Elastica * @author Bennie Krijger <benniekrijger@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-shape-filter/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-filter.html */ abstract class AbstractGeoShape extends AbstractFilter { - const RELATION_INTERSECT = 'intersects'; - const RELATION_DISJOINT = 'disjoint'; - const RELATION_CONTAINS = 'within'; + const RELATION_INTERSECT = 'intersects'; + const RELATION_DISJOINT = 'disjoint'; + const RELATION_CONTAINS = 'within'; /** - * @var string $_path + * @var string * * elasticsearch path of the pre-indexed shape */ protected $_path; /** - * @var string $_relation + * @var string * * the relation of the 2 shaped: intersects, disjoint, within */ @@ -34,10 +32,14 @@ abstract class AbstractGeoShape extends AbstractFilter /** * @param string $relation + * + * @return $this */ public function setRelation($relation) { $this->_relation = $relation; + + return $this; } /** diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractMulti.php b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractMulti.php index 53ef74cf..06f6daea 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractMulti.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/AbstractMulti.php @@ -1,27 +1,36 @@ <?php - namespace Elastica\Filter; /** - * Multi Abstract filter object. Should be extended by filter types composed of an array of sub filters + * Multi Abstract filter object. Should be extended by filter types composed of an array of sub filters. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ abstract class AbstractMulti extends AbstractFilter { /** - * Filters + * Filters. + * * @var array */ protected $_filters = array(); /** - * Add filter + * @param \Elastica\Filter\AbstractFilter $filters + */ + public function __construct(array $filters = array()) + { + if (!empty($filters)) { + $this->setFilters($filters); + } + } + + /** + * Add filter. + * + * @param \Elastica\Filter\AbstractFilter $filter * - * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Filter\AbstractMulti + * @return $this */ public function addFilter(AbstractFilter $filter) { @@ -31,10 +40,11 @@ abstract class AbstractMulti extends AbstractFilter } /** - * Set filters + * Set filters. * - * @param array $filters - * @return \Elastica\Filter\AbstractMulti + * @param array $filters + * + * @return $this */ public function setFilters(array $filters) { @@ -57,6 +67,8 @@ abstract class AbstractMulti extends AbstractFilter /** * @see \Elastica\Param::toArray() + * + * @return array */ public function toArray() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Bool.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Bool.php index aff708f8..0d30f83f 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Bool.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Bool.php @@ -1,146 +1,15 @@ <?php - namespace Elastica\Filter; -use Elastica\Exception\InvalidException; - /** - * Bool Filter + * Bool Filter. + * + * This class is for backward compatibility reason for all php < 7 versions. For PHP 7 and above use BoolFilter as Bool is reserved. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html */ -class Bool extends AbstractFilter +class Bool extends BoolFilter { - /** - * @var float - */ - protected $_boost = 1.0; - - /** - * Must - * - * @var array - */ - protected $_must = array(); - - /** - * Should - * - * @var array - */ - protected $_should = array(); - - /** - * Must not - * - * @var array - */ - protected $_mustNot = array(); - - /** - * Adds should filter - * - * @param array|\Elastica\Filter\AbstractFilter $args Filter data - * @return \Elastica\Filter\Bool Current object - */ - public function addShould($args) - { - return $this->_addFilter('should', $args); - } - - /** - * Adds must filter - * - * @param array|\Elastica\Filter\AbstractFilter $args Filter data - * @return \Elastica\Filter\Bool Current object - */ - public function addMust($args) - { - return $this->_addFilter('must', $args); - } - - /** - * Adds mustNot filter - * - * @param array|\Elastica\Filter\AbstractFilter $args Filter data - * @return \Elastica\Filter\Bool Current object - */ - public function addMustNot($args) - { - return $this->_addFilter('mustNot', $args); - } - - /** - * Adds general filter based on type - * - * @param string $type Filter type - * @param array|\Elastica\Filter\AbstractFilter $args Filter data - * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Filter\Bool Current object - */ - protected function _addFilter($type, $args) - { - if ($args instanceof AbstractFilter) { - $args = $args->toArray(); - } - else if (!is_array($args)) { - throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Filter'); - } - else{ - $parsedArgs = array(); - foreach($args as $filter){ - if($filter instanceof AbstractFilter){ - $parsedArgs[] = $filter->toArray(); - } - } - $args = $parsedArgs; - } - - $varName = '_' . $type; - $this->{$varName}[] = $args; - - return $this; - } - - /** - * Converts bool filter to array - * - * @see \Elastica\Filter\AbstractFilter::toArray() - * @return array Filter array - */ - public function toArray() - { - $args = array(); - - if (!empty($this->_must)) { - $args['bool']['must'] = $this->_must; - } - - if (!empty($this->_should)) { - $args['bool']['should'] = $this->_should; - } - - if (!empty($this->_mustNot)) { - $args['bool']['must_not'] = $this->_mustNot; - } - - return $args; - } - - /** - * Sets the boost value for this filter - * - * @param float $boost Boost - * @return \Elastica\Filter\Bool Current object - */ - public function setBoost($boost) - { - $this->_boost = $boost; - - return $this; - } - } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolAnd.php b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolAnd.php index 2fd19f8e..8a08ea9c 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolAnd.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolAnd.php @@ -1,14 +1,12 @@ <?php - namespace Elastica\Filter; /** - * And Filter + * And Filter. * - * @category Xodoa - * @package Elastica * @author Lee Parker, Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/and-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-and-filter.html */ class BoolAnd extends AbstractMulti { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolFilter.php b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolFilter.php new file mode 100644 index 00000000..5a488b77 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolFilter.php @@ -0,0 +1,133 @@ +<?php +namespace Elastica\Filter; + +use Elastica\Exception\InvalidException; + +/** + * Bool Filter. + * + * @author Nicolas Ruflin <spam@ruflin.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html + */ +class BoolFilter extends AbstractFilter +{ + /** + * Must. + * + * @var array + */ + protected $_must = array(); + + /** + * Should. + * + * @var array + */ + protected $_should = array(); + + /** + * Must not. + * + * @var array + */ + protected $_mustNot = array(); + + /** + * Adds should filter. + * + * @param array|\Elastica\Filter\AbstractFilter $args Filter data + * + * @return $this + */ + public function addShould($args) + { + return $this->_addFilter('should', $args); + } + + /** + * Adds must filter. + * + * @param array|\Elastica\Filter\AbstractFilter $args Filter data + * + * @return $this + */ + public function addMust($args) + { + return $this->_addFilter('must', $args); + } + + /** + * Adds mustNot filter. + * + * @param array|\Elastica\Filter\AbstractFilter $args Filter data + * + * @return $this + */ + public function addMustNot($args) + { + return $this->_addFilter('mustNot', $args); + } + + /** + * Adds general filter based on type. + * + * @param string $type Filter type + * @param array|\Elastica\Filter\AbstractFilter $args Filter data + * + * @throws \Elastica\Exception\InvalidException + * + * @return $this + */ + protected function _addFilter($type, $args) + { + if ($args instanceof AbstractFilter) { + $args = $args->toArray(); + } elseif (!is_array($args)) { + throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Filter'); + } else { + $parsedArgs = array(); + foreach ($args as $filter) { + if ($filter instanceof AbstractFilter) { + $parsedArgs[] = $filter->toArray(); + } + } + $args = $parsedArgs; + } + + $varName = '_'.$type; + $this->{$varName}[] = $args; + + return $this; + } + + /** + * Converts bool filter to array. + * + * @see \Elastica\Filter\AbstractFilter::toArray() + * + * @return array Filter array + */ + public function toArray() + { + $args = array(); + + if (!empty($this->_must)) { + $args['bool']['must'] = $this->_must; + } + + if (!empty($this->_should)) { + $args['bool']['should'] = $this->_should; + } + + if (!empty($this->_mustNot)) { + $args['bool']['must_not'] = $this->_mustNot; + } + + if (isset($args['bool'])) { + $args['bool'] = array_merge($args['bool'], $this->getParams()); + } + + return $args; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolNot.php b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolNot.php index 1778997b..81db7f65 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolNot.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolNot.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Filter; /** - * Not Filter + * Not Filter. * - * @category Xodoa - * @package Elastica * @author Lee Parker, Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/not-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-not-filter.html */ class BoolNot extends AbstractFilter { /** - * Creates Not filter query + * Creates Not filter query. * * @param \Elastica\Filter\AbstractFilter $filter Filter object */ @@ -23,10 +21,11 @@ class BoolNot extends AbstractFilter } /** - * Set filter + * Set filter. + * + * @param \Elastica\Filter\AbstractFilter $filter * - * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Filter\BoolNot + * @return $this */ public function setFilter(AbstractFilter $filter) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolOr.php b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolOr.php index 6f63fc30..9091e496 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/BoolOr.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/BoolOr.php @@ -1,14 +1,12 @@ <?php - namespace Elastica\Filter; /** - * Or Filter + * Or Filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/or-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-or-filter.html */ class BoolOr extends AbstractMulti { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Exists.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Exists.php index 6fe43e3d..d6dc9962 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Exists.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Exists.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Filter; /** - * Exists query + * Exists query. * - * @category Xodoa - * @package Elastica * @author Oleg Cherniy <oleg.cherniy@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/exists-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-filter.html */ class Exists extends AbstractFilter { /** - * Construct exists filter + * Construct exists filter. * * @param string $field */ @@ -23,10 +21,11 @@ class Exists extends AbstractFilter } /** - * Set field + * Set field. + * + * @param string $field * - * @param string $field - * @return \Elastica\Filter\Exists + * @return $this */ public function setField($field) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoBoundingBox.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoBoundingBox.php index 1462e9af..f67febe3 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoBoundingBox.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoBoundingBox.php @@ -1,21 +1,19 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; /** - * Geo bounding box filter + * Geo bounding box filter. * - * @category Xodoa - * @package Elastica * @author Fabian Vogler <fabian@equivalence.ch> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-bounding-box-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-bounding-box-filter.html */ class GeoBoundingBox extends AbstractFilter { /** - * Construct BoundingBoxFilter + * Construct BoundingBoxFilter. * * @param string $key Key * @param array $coordinates Array with top left coordinate as first and bottom right coordinate as second element @@ -26,12 +24,14 @@ class GeoBoundingBox extends AbstractFilter } /** - * Add coordinates + * Add coordinates. + * + * @param string $key Key + * @param array $coordinates Array with top left coordinate as first and bottom right coordinate as second element + * + * @throws \Elastica\Exception\InvalidException If $coordinates doesn't have two elements * - * @param string $key Key - * @param array $coordinates Array with top left coordinate as first and bottom right coordinate as second element - * @throws \Elastica\Exception\InvalidException If $coordinates doesn't have two elements - * @return \Elastica\Filter\GeoBoundingBox Current object + * @return $this */ public function addCoordinates($key, array $coordinates) { @@ -41,7 +41,7 @@ class GeoBoundingBox extends AbstractFilter $this->setParam($key, array( 'top_left' => $coordinates[0], - 'bottom_right' => $coordinates[1] + 'bottom_right' => $coordinates[1], )); return $this; diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistance.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistance.php index 8e875365..f4cb51d9 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistance.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistance.php @@ -1,30 +1,30 @@ <?php - namespace Elastica\Filter; /** - * Geo distance filter + * Geo distance filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-distance-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-filter.html */ class GeoDistance extends AbstractGeoDistance { const DISTANCE_TYPE_ARC = 'arc'; const DISTANCE_TYPE_PLANE = 'plane'; + const DISTANCE_TYPE_SLOPPY_ARC = 'sloppy_arc'; const OPTIMIZE_BBOX_MEMORY = 'memory'; const OPTIMIZE_BBOX_INDEXED = 'indexed'; const OPTIMIZE_BBOX_NONE = 'none'; /** - * Create GeoDistance object + * Create GeoDistance object. + * + * @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 * - * @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 * @throws \Elastica\Exception\InvalidException */ public function __construct($key, $location, $distance) @@ -35,8 +35,9 @@ class GeoDistance extends AbstractGeoDistance } /** - * @param string $distance - * @return \Elastica\Filter\GeoDistance current filter + * @param string $distance + * + * @return $this */ public function setDistance($distance) { @@ -46,10 +47,11 @@ class GeoDistance extends AbstractGeoDistance } /** - * See DISTANCE_TYPE_* constants + * See DISTANCE_TYPE_* constants. + * + * @param string $distanceType * - * @param string $distanceType - * @return \Elastica\Filter\GeoDistance current filter + * @return $this */ public function setDistanceType($distanceType) { @@ -59,10 +61,11 @@ class GeoDistance extends AbstractGeoDistance } /** - * See OPTIMIZE_BBOX_* constants + * See OPTIMIZE_BBOX_* constants. + * + * @param string $optimizeBbox * - * @param string $optimizeBbox - * @return \Elastica\Filter\GeoDistance current filter + * @return $this */ public function setOptimizeBbox($optimizeBbox) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistanceRange.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistanceRange.php index 230e5ebf..f5cbbeb7 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistanceRange.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoDistanceRange.php @@ -1,16 +1,14 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; /** - * Geo distance filter + * Geo distance filter. * - * @category Xodoa - * @package Elastica * @author munkie - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-distance-range-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-range-filter.html */ class GeoDistanceRange extends AbstractGeoDistance { @@ -33,6 +31,7 @@ class GeoDistanceRange extends AbstractGeoDistance * @param string $key * @param array|string $location * @param array $ranges + * * @internal param string $distance */ public function __construct($key, $location, array $ranges = array()) @@ -45,8 +44,9 @@ class GeoDistanceRange extends AbstractGeoDistance } /** - * @param array $ranges - * @return \Elastica\Filter\GeoDistanceRange + * @param array $ranges + * + * @return $this */ public function setRanges(array $ranges) { @@ -60,10 +60,12 @@ class GeoDistanceRange extends AbstractGeoDistance } /** - * @param string $key - * @param mixed $value - * @return \Elastica\Filter\GeoDistanceRange + * @param string $key + * @param mixed $value + * * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function setRange($key, $value) { @@ -80,7 +82,7 @@ class GeoDistanceRange extends AbstractGeoDistance $value = (boolean) $value; break; default: - throw new InvalidException('Invalid range parameter given: ' . $key); + throw new InvalidException('Invalid range parameter given: '.$key); } $this->_ranges[$key] = $value; diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoPolygon.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoPolygon.php index fa12c035..86ca2b80 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoPolygon.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoPolygon.php @@ -1,35 +1,31 @@ <?php - namespace Elastica\Filter; -use Elastica\Filter\AbstractFilter; - /** - * Geo polygon filter + * Geo polygon filter. * - * @category Xodoa - * @package Elastica * @author Michael Maclean <mgdm@php.net> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-polygon-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-polygon-filter.html */ class GeoPolygon extends AbstractFilter { /** - * Key + * Key. * * @var string Key */ protected $_key = ''; /** - * Points making up polygon + * Points making up polygon. * * @var array Points making up polygon */ protected $_points = array(); /** - * Construct polygon filter + * Construct polygon filter. * * @param string $key Key * @param array $points Points making up polygon @@ -41,9 +37,10 @@ class GeoPolygon extends AbstractFilter } /** - * Converts filter to array + * Converts filter to array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array */ public function toArray() @@ -51,9 +48,9 @@ class GeoPolygon extends AbstractFilter return array( 'geo_polygon' => array( $this->_key => array( - 'points' => $this->_points + 'points' => $this->_points, ), - ) + ), ); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapePreIndexed.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapePreIndexed.php index 7e89f8a8..d07cffff 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapePreIndexed.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapePreIndexed.php @@ -1,49 +1,47 @@ <?php - namespace Elastica\Filter; /** - * geo_shape filter for pre-indexed shapes + * geo_shape filter for pre-indexed shapes. * * Filter pre-indexed shape definitions * - * @category Xodoa - * @package Elastica * @author Bennie Krijger <benniekrijger@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-shape-filter/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-filter.html */ class GeoShapePreIndexed extends AbstractGeoShape { /** - * elasticsearch id of the pre-indexed shape + * elasticsearch id of the pre-indexed shape. * * @var string */ protected $_indexedId; /** - * elasticsearch type of the pre-indexed shape + * elasticsearch type of the pre-indexed shape. * * @var string */ protected $_indexedType; /** - * elasticsearch index of the pre-indexed shape + * elasticsearch index of the pre-indexed shape. * * @var string */ protected $_indexedIndex; /** - * elasticsearch path/field name of the pre-indexed shape + * elasticsearch path/field name of the pre-indexed shape. * * @var string */ protected $_indexedPath; /** - * Construct geo_shape filter with a pre-indexed shape + * Construct geo_shape filter with a pre-indexed shape. * * @param string $path The path/field of the shape searched * @param string $indexedId Id of the pre-indexed shape @@ -61,9 +59,10 @@ class GeoShapePreIndexed extends AbstractGeoShape } /** - * Converts filter to array + * Converts filter to array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array */ public function toArray() @@ -75,11 +74,11 @@ class GeoShapePreIndexed extends AbstractGeoShape 'id' => $this->_indexedId, 'type' => $this->_indexedType, 'index' => $this->_indexedIndex, - 'path' => $this->_indexedPath + 'path' => $this->_indexedPath, ), - 'relation' => $this->_relation - ) - ) + 'relation' => $this->_relation, + ), + ), ); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapeProvided.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapeProvided.php index 5a88c05f..0f25beeb 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapeProvided.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeoShapeProvided.php @@ -1,42 +1,40 @@ <?php - namespace Elastica\Filter; /** - * geo_shape filter or provided shapes + * geo_shape filter or provided shapes. * * Filter provided shape definitions * - * @category Xodoa - * @package Elastica * @author BennieKrijger <benniekrijger@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geo-shape-filter/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-filter.html */ class GeoShapeProvided extends AbstractGeoShape { - const TYPE_ENVELOPE = 'envelope'; - const TYPE_MULTIPOINT = 'multipoint'; - const TYPE_POINT = 'point'; - const TYPE_MULTIPOLYGON = 'multipolygon'; - const TYPE_LINESTRING = 'linestring'; - const TYPE_POLYGON = 'polygon'; + const TYPE_ENVELOPE = 'envelope'; + const TYPE_MULTIPOINT = 'multipoint'; + const TYPE_POINT = 'point'; + const TYPE_MULTIPOLYGON = 'multipolygon'; + const TYPE_LINESTRING = 'linestring'; + const TYPE_POLYGON = 'polygon'; /** - * Type of the geo_shape + * Type of the geo_shape. * * @var string */ protected $_shapeType; /** - * Coordinates making up geo_shape + * Coordinates making up geo_shape. * * @var array Coordinates making up geo_shape */ protected $_coordinates; /** - * Construct geo_shape filter + * Construct geo_shape filter. * * @param string $path The path/field of the shape searched * @param array $coordinates Points making up the shape @@ -52,9 +50,10 @@ class GeoShapeProvided extends AbstractGeoShape } /** - * Converts filter to array + * Converts filter to array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array */ public function toArray() @@ -64,11 +63,11 @@ class GeoShapeProvided extends AbstractGeoShape $this->_path => array( 'shape' => array( 'type' => $this->_shapeType, - 'coordinates' => $this->_coordinates + 'coordinates' => $this->_coordinates, ), - 'relation' => $this->_relation + 'relation' => $this->_relation, ), - ) + ), ); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/GeohashCell.php b/vendor/ruflin/elastica/lib/Elastica/Filter/GeohashCell.php index d14b25fe..dd147152 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/GeohashCell.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/GeohashCell.php @@ -1,20 +1,18 @@ <?php - namespace Elastica\Filter; - /** - * Class GeohashCell - * @package Elastica - * @link http://www.elasticsearch.org/guide/reference/query-dsl/geohash-cell-filter/ + * Class GeohashCell. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geohash-cell-filter.html */ class GeohashCell extends AbstractGeoDistance { /** - * @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 $precision Integer length of geohash prefix or distance (3, or "50m") - * @param bool $neighbors If true, filters cells next to the given cell. + * @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 string|int $precision Integer length of geohash prefix or distance (3, or "50m") + * @param bool $neighbors If true, filters cells next to the given cell. */ public function __construct($key, $location, $precision = -1, $neighbors = false) { @@ -24,9 +22,11 @@ class GeohashCell extends AbstractGeoDistance } /** - * Set the precision for this filter + * Set the precision for this filter. + * * @param string|int $precision Integer length of geohash prefix or distance (3, or "50m") - * @return \Elastica\Filter\GeohashCell + * + * @return $this */ public function setPrecision($precision) { @@ -34,12 +34,14 @@ class GeohashCell extends AbstractGeoDistance } /** - * Set the neighbors option for this filter + * Set the neighbors option for this filter. + * * @param bool $neighbors If true, filters cells next to the given cell. - * @return \Elastica\Filter\GeohashCell + * + * @return $this */ public function setNeighbors($neighbors) { - return $this->setParam('neighbors', (bool)$neighbors); + return $this->setParam('neighbors', (bool) $neighbors); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/HasChild.php b/vendor/ruflin/elastica/lib/Elastica/Filter/HasChild.php index e8c6ab96..2c4cc0d6 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/HasChild.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/HasChild.php @@ -1,22 +1,20 @@ <?php - namespace Elastica\Filter; /** - * Returns parent documents having child docs matching the query + * Returns parent documents having child docs matching the query. * - * @category Xodoa - * @package Elastica * @author Fabian Vogler <fabian@equivalence.ch> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/has-child-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-filter.html */ class HasChild extends AbstractFilter { /** - * Construct HasChild filter + * Construct HasChild filter. * * @param string|\Elastica\Query|\Elastica\Filter\AbstractFilter $query Query string or a Elastica\Query object or a filter - * @param string $type Parent document type + * @param string|\Elastica\Type $type Child document type */ public function __construct($query, $type = null) { @@ -29,10 +27,11 @@ class HasChild extends AbstractFilter } /** - * Sets query object + * Sets query object. * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Filter\HasChild Current object + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery($query) { @@ -43,36 +42,54 @@ class HasChild extends AbstractFilter } /** - * Sets the filter object + * Sets the filter object. * * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Filter\HasChild Current object + * + * @return $this */ public function setFilter($filter) { - $data = $filter->toArray(); - return $this->setParam('filter', $data); + return $this->setParam('filter', $filter->toArray()); } /** - * Set type of the parent document + * Set type of the child document. * - * @param string $type Parent document type - * @return \Elastica\Filter\HasChild Current object + * @param string|\Elastica\Type $type Child document type + * + * @return $this */ public function setType($type) { - return $this->setParam('type', $type); + if ($type instanceof \Elastica\Type) { + $type = $type->getName(); + } + + return $this->setParam('type', (string) $type); } /** - * Sets the scope + * Set minimum number of children are required to match for the parent doc to be considered a match. + * + * @param int $count + * + * @return $this + */ + public function setMinimumChildrenCount($count) + { + return $this->setParam('min_children', (int) $count); + } + + /** + * Set maximum number of children are required to match for the parent doc to be considered a match. + * + * @param int $count * - * @param string $scope Scope - * @return \Elastica\Filter\HasChild Current object + * @return $this */ - public function setScope($scope) + public function setMaximumChildrenCount($count) { - return $this->setParam('_scope', $scope); + return $this->setParam('max_children', (int) $count); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/HasParent.php b/vendor/ruflin/elastica/lib/Elastica/Filter/HasParent.php index de49e470..73a2dc5a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/HasParent.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/HasParent.php @@ -1,21 +1,18 @@ <?php - namespace Elastica\Filter; /** - * Returns child documents having parent docs matching the query + * Returns child documents having parent docs matching the query. * - * @category Xodoa - * @package Elastica - * @link http://www.elasticsearch.org/guide/reference/query-dsl/has-parent-filter.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-filter.html */ class HasParent extends AbstractFilter { /** - * Construct HasParent filter + * Construct HasParent filter. * * @param string|\Elastica\Query|\Elastica\Filter\AbstractFilter $query Query string or a Query object or a filter - * @param string $type Parent document type + * @param string|\Elastica\Type $type Parent document type */ public function __construct($query, $type) { @@ -28,10 +25,11 @@ class HasParent extends AbstractFilter } /** - * Sets query object + * Sets query object. + * + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Filter\HasParent Current object + * @return $this */ public function setQuery($query) { @@ -42,36 +40,30 @@ class HasParent extends AbstractFilter } /** - * Sets query object + * Sets filter object. + * + * @param \Elastica\Filter\AbstractFilter $filter * - * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Filter\HasParent Current object + * @return $this */ public function setFilter($filter) { - $data = $filter->toArray(); - return $this->setParam('filter', $data); + return $this->setParam('filter', $filter->toArray()); } /** - * Set type of the parent document + * Set type of the parent document. * - * @param string $type Parent document type - * @return \Elastica\Filter\HasParent Current object + * @param string|\Elastica\Type $type Parent document type + * + * @return $this */ public function setType($type) { - return $this->setParam('type', $type); - } + if ($type instanceof \Elastica\Type) { + $type = $type->getName(); + } - /** - * Sets the scope - * - * @param string $scope Scope - * @return \Elastica\Filter\HasParent Current object - */ - public function setScope($scope) - { - return $this->setParam('_scope', $scope); + return $this->setParam('type', (string) $type); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Ids.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Ids.php index fd1d9770..bfb8cc48 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Ids.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Ids.php @@ -1,24 +1,22 @@ <?php - namespace Elastica\Filter; use Elastica\Type as ElasticaType; /** - * Ids Filter + * Ids Filter. * - * @category Xodoa - * @package Elastica * @author Lee Parker, Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/ids-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-filter.html */ class Ids extends AbstractFilter { /** - * Creates filter object + * Creates filter object. * * @param string|\Elastica\Type $type Type to filter on - * @param array $ids List of ids + * @param array $ids List of ids */ public function __construct($type = null, array $ids = array()) { @@ -27,10 +25,11 @@ class Ids extends AbstractFilter } /** - * Adds one more filter to the and filter + * Adds one more filter to the and filter. + * + * @param string $id Adds id to filter * - * @param string $id Adds id to filter - * @return \Elastica\Filter\Ids Current object + * @return $this */ public function addId($id) { @@ -38,10 +37,11 @@ class Ids extends AbstractFilter } /** - * Adds one more type to query + * Adds one more type to query. * - * @param string|\Elastica\Type $type Type name or object - * @return \Elastica\Filter\Ids Current object + * @param string|\Elastica\Type $type Type name or object + * + * @return $this */ public function addType($type) { @@ -57,10 +57,11 @@ class Ids extends AbstractFilter } /** - * Set type + * Set type. + * + * @param string|\Elastica\Type $type Type name or object * - * @param string|\Elastica\Type $type Type name or object - * @return \Elastica\Filter\Ids Current object + * @return $this */ public function setType($type) { @@ -76,10 +77,11 @@ class Ids extends AbstractFilter } /** - * Sets the ids to filter + * Sets the ids to filter. + * + * @param array|string $ids List of ids * - * @param array|string $ids List of ids - * @return \Elastica\Filter\Ids Current object + * @return $this */ public function setIds($ids) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Indices.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Indices.php index 66ca5965..ffaf5975 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Indices.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Indices.php @@ -1,18 +1,18 @@ <?php - namespace Elastica\Filter; +use Elastica\Index as ElasticaIndex; /** - * Class Indices - * @package Elastica\Filter - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-indices-filter.html + * Class Indices. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-indices-filter.html */ class Indices extends AbstractFilter { /** - * @param AbstractFilter $filter filter which will be applied to docs in the specified indices - * @param string[] $indices + * @param AbstractFilter $filter filter which will be applied to docs in the specified indices + * @param mixed[] $indices */ public function __construct(AbstractFilter $filter, array $indices) { @@ -20,19 +20,44 @@ class Indices extends AbstractFilter } /** - * Set the names of the indices on which this filter should be applied - * @param string[] $indices - * @return Indices + * Set the indices on which this filter should be applied. + * + * @param mixed[] $indices + * + * @return $this */ public function setIndices(array $indices) { - return $this->setParam('indices', $indices); + $this->setParam('indices', array()); + foreach ($indices as $index) { + $this->addIndex($index); + } + + return $this; + } + + /** + * Adds one more index on which this filter should be applied. + * + * @param string|\Elastica\Index $index + * + * @return $this + */ + public function addIndex($index) + { + if ($index instanceof ElasticaIndex) { + $index = $index->getName(); + } + + return $this->addParam('indices', (string) $index); } /** - * Set the filter to be applied to docs in the specified indices + * Set the filter to be applied to docs in the specified indices. + * * @param AbstractFilter $filter - * @return Indices + * + * @return $this */ public function setFilter(AbstractFilter $filter) { @@ -40,12 +65,14 @@ class Indices extends AbstractFilter } /** - * Set the filter to be applied to docs in indices which do not match those specified in the "indices" parameter + * Set the filter to be applied to docs in indices which do not match those specified in the "indices" parameter. + * * @param AbstractFilter $filter - * @return Indices + * + * @return $this */ public function setNoMatchFilter(AbstractFilter $filter) { return $this->setParam('no_match_filter', $filter->toArray()); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Limit.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Limit.php index e02853ae..bf3f8e13 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Limit.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Limit.php @@ -1,22 +1,19 @@ <?php - namespace Elastica\Filter; /** - * Limit Filter + * Limit Filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/limit-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-limit-filter.html */ class Limit extends AbstractFilter { /** - * Construct limit filter + * Construct limit filter. * - * @param int $limit Limit - * @return \Elastica\Filter\Limit + * @param int $limit Limit */ public function __construct($limit) { @@ -24,10 +21,11 @@ class Limit extends AbstractFilter } /** - * Set the limit + * Set the limit. + * + * @param int $limit Limit * - * @param int $limit Limit - * @return \Elastica\Filter\Limit + * @return $this */ public function setLimit($limit) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/MatchAll.php b/vendor/ruflin/elastica/lib/Elastica/Filter/MatchAll.php index a69b65a2..607c5fd1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/MatchAll.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/MatchAll.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Filter; /** - * Match all filter + * Match all filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/match-all-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-filter.html */ class MatchAll extends AbstractFilter { /** - * Creates match all filter + * Creates match all filter. */ public function __construct() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Missing.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Missing.php index df8466a8..9b157b2c 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Missing.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Missing.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Filter; /** - * Missing Filter + * Missing Filter. * - * @category Xodoa - * @package Elastica * @author Maciej Wiercinski <maciej@wiercinski.net> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/missing-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-missing-filter.html */ class Missing extends AbstractFilter { /** - * Construct missing filter + * Construct missing filter. * * @param string $field OPTIONAL */ @@ -25,13 +23,38 @@ class Missing extends AbstractFilter } /** - * Set field + * Set field. + * + * @param string $field * - * @param string $field - * @return \Elastica\Filter\Missing + * @return $this */ public function setField($field) { return $this->setParam('field', (string) $field); } + + /** + * Set "existence" parameter. + * + * @param bool $existence + * + * @return $this + */ + public function setExistence($existence) + { + return $this->setParam('existence', (bool) $existence); + } + + /** + * Set "null_value" parameter. + * + * @param bool $nullValue + * + * @return $this + */ + public function setNullValue($nullValue) + { + return $this->setParam('null_value', (bool) $nullValue); + } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Nested.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Nested.php index 16293519..ad21bc7e 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Nested.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Nested.php @@ -1,24 +1,23 @@ <?php - namespace Elastica\Filter; use Elastica\Query\AbstractQuery; /** - * Nested filter + * Nested filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/nested-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-filter.html */ class Nested extends AbstractFilter { /** - * Adds field to mlt filter + * Adds field to mlt filter. + * + * @param string $path Nested object path * - * @param string $path Nested object path - * @return \Elastica\Filter\Nested + * @return $this */ public function setPath($path) { @@ -26,10 +25,11 @@ class Nested extends AbstractFilter } /** - * Sets nested query + * Sets nested query. * - * @param \Elastica\Query\AbstractQuery $query - * @return \Elastica\Filter\Nested + * @param \Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery(AbstractQuery $query) { @@ -37,10 +37,11 @@ class Nested extends AbstractFilter } /** - * Sets nested filter + * Sets nested filter. + * + * @param \Elastica\Filter\AbstractFilter $filter * - * @param \Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Filter\Nested + * @return $this */ public function setFilter(AbstractFilter $filter) { @@ -48,13 +49,14 @@ class Nested extends AbstractFilter } /** - * Set score mode + * Set join option. + * + * @param bool $join * - * @param string $scoreMode Options: avg, total, max and none. - * @return \Elastica\Filter\Nested + * @return $this */ - public function setScoreMode($scoreMode) + public function setJoin($join) { - return $this->setParam('score_mode', $scoreMode); + return $this->setParam('join', (bool) $join); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/NumericRange.php b/vendor/ruflin/elastica/lib/Elastica/Filter/NumericRange.php index 5a6e2551..08342616 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/NumericRange.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/NumericRange.php @@ -1,14 +1,12 @@ <?php - namespace Elastica\Filter; /** - * Numeric Range Filter + * Numeric Range Filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/numeric-range-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-filter.html */ class NumericRange extends Range { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Prefix.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Prefix.php index 2caf13cb..e845fd73 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Prefix.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Prefix.php @@ -1,14 +1,12 @@ <?php - namespace Elastica\Filter; /** - * Prefix filter + * Prefix filter. * - * @category Xodoa - * @package Elastica * @author Jasper van Wanrooy <jasper@vanwanrooy.net> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/prefix-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-filter.html */ class Prefix extends AbstractFilter { @@ -27,7 +25,7 @@ class Prefix extends AbstractFilter protected $_prefix = ''; /** - * Creates prefix filter + * Creates prefix filter. * * @param string $field Field name * @param string $prefix Prefix string @@ -41,8 +39,9 @@ class Prefix extends AbstractFilter /** * Sets the name of the prefix field. * - * @param string $field Field name - * @return \Elastica\Filter\Prefix + * @param string $field Field name + * + * @return $this */ public function setField($field) { @@ -54,8 +53,9 @@ class Prefix extends AbstractFilter /** * Sets the prefix string. * - * @param string $prefix Prefix string - * @return \Elastica\Filter\Prefix + * @param string $prefix Prefix string + * + * @return $this */ public function setPrefix($prefix) { @@ -65,9 +65,10 @@ class Prefix extends AbstractFilter } /** - * Converts object to an array + * Converts object to an array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array data array */ public function toArray() diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Query.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Query.php index 3f1ba2d2..acb6a124 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Query.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Query.php @@ -1,28 +1,27 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; use Elastica\Query\AbstractQuery; /** - * Query filter + * Query filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/query-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-filter.html */ class Query extends AbstractFilter { /** - * Query + * Query. + * * @var array */ protected $_query; /** - * Construct query filter + * Construct query filter. * * @param array|\Elastica\Query\AbstractQuery $query */ @@ -34,15 +33,17 @@ class Query extends AbstractFilter } /** - * Set query + * Set query. + * + * @param array|\Elastica\Query\AbstractQuery $query + * + * @throws \Elastica\Exception\InvalidException If parameter is invalid * - * @param array|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Filter\Query Query object - * @throws \Elastica\Exception\InvalidException Invalid param + * @return $this */ public function setQuery($query) { - if (!$query instanceof AbstractQuery && ! is_array($query)) { + if (!$query instanceof AbstractQuery && !is_array($query)) { throw new InvalidException('expected an array or instance of Elastica\Query\AbstractQuery'); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Range.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Range.php index b142e674..1e7bf132 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Range.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Range.php @@ -1,31 +1,29 @@ <?php - namespace Elastica\Filter; /** - * Range Filter + * Range Filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/range-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-filter.html */ class Range extends AbstractFilter { /** - * Fields + * Fields. * * @var array Fields */ protected $_fields = array(); /** - * Construct range filter + * Construct range filter. * - * @param string|bool $fieldName Field name - * @param array $args Field arguments + * @param string $fieldName Field name + * @param array $args Field arguments */ - public function __construct($fieldName = false, array $args = array()) + public function __construct($fieldName = '', array $args = array()) { if ($fieldName) { $this->addField($fieldName, $args); @@ -33,11 +31,12 @@ class Range extends AbstractFilter } /** - * Ads a field with arguments to the range query + * Ads a field with arguments to the range query. + * + * @param string $fieldName Field name + * @param array $args Field arguments * - * @param string $fieldName Field name - * @param array $args Field arguments - * @return \Elastica\Filter\Range + * @return $this */ public function addField($fieldName, array $args) { @@ -47,14 +46,27 @@ class Range extends AbstractFilter } /** - * Converts object to array + * Set execution mode. + * + * @param string $execution Options: "index" or "fielddata" + * + * @return $this + */ + public function setExecution($execution) + { + return $this->setParam('execution', (string) $execution); + } + + /** + * Converts object to array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array Filter array */ public function toArray() { - $this->setParams($this->_fields); + $this->setParams(array_merge($this->getParams(), $this->_fields)); return parent::toArray(); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Regexp.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Regexp.php index 33c47cfd..612dc434 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Regexp.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Regexp.php @@ -1,14 +1,12 @@ <?php - namespace Elastica\Filter; /** - * Regexp filter + * Regexp filter. * - * @category Xodoa - * @package Elastica * @author Timothy Lamb <trash80@gmail.com> - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-regexp-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-filter.html */ class Regexp extends AbstractFilter { @@ -27,23 +25,34 @@ class Regexp extends AbstractFilter protected $_regexp = ''; /** - * Create Regexp object + * Holds the regexp options. + * + * @var array + */ + protected $_options = array(); + + /** + * Create Regexp object. + * + * @param string $field Field name + * @param string $regexp Regular expression + * @param array $options Regular expression options * - * @param string $field Field name - * @param string $regexp Regular expression * @throws \Elastica\Exception\InvalidException */ - public function __construct($field = '', $regexp = '') + public function __construct($field = '', $regexp = '', $options = array()) { $this->setField($field); $this->setRegexp($regexp); + $this->setOptions($options); } /** * Sets the name of the regexp field. * - * @param string $field Field name - * @return \Elastica\Filter\Regexp + * @param string $field Field name + * + * @return $this */ public function setField($field) { @@ -55,8 +64,9 @@ class Regexp extends AbstractFilter /** * Sets the regular expression query string. * - * @param string $regexp Regular expression - * @return \Elastica\Filter\Regexp + * @param string $regexp Regular expression + * + * @return $this */ public function setRegexp($regexp) { @@ -66,14 +76,36 @@ class Regexp extends AbstractFilter } /** - * Converts object to an array + * Sets the regular expression query options. + * + * @param array $options Regular expression options + * + * @return $this + */ + public function setOptions($options) + { + $this->_options = $options; + + return $this; + } + + /** + * Converts object to an array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array data array */ public function toArray() { - $this->setParam($this->_field, $this->_regexp); + if (count($this->_options) > 0) { + $options = array('value' => $this->_regexp); + $options = array_merge($options, $this->_options); + + $this->setParam($this->_field, $options); + } else { + $this->setParam($this->_field, $this->_regexp); + } return parent::toArray(); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Script.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Script.php index 9b34b1ec..2c8d34bf 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Script.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Script.php @@ -1,29 +1,26 @@ <?php - namespace Elastica\Filter; use Elastica; -use Elastica\Query\AbstractQuery; /** - * Script filter + * Script filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/script-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-filter.html */ class Script extends AbstractFilter { /** - * Query object + * Query object. * * @var array|\Elastica\Query\AbstractQuery */ protected $_query = null; /** - * Construct script filter + * Construct script filter. * * @param array|string|\Elastica\Script $script OPTIONAL Script */ @@ -35,10 +32,11 @@ class Script extends AbstractFilter } /** - * Sets script object + * Sets script object. + * + * @param \Elastica\Script|string|array $script * - * @param \Elastica\Script|string|array $script - * @return \Elastica\Filter\Script + * @return $this */ public function setScript($script) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Term.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Term.php index b4773030..2a387318 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Term.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Term.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Filter; /** - * Term query + * Term query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/term-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html */ class Term extends AbstractFilter { /** - * Construct term filter + * Construct term filter. * * @param array $term Term array */ @@ -23,10 +21,11 @@ class Term extends AbstractFilter } /** - * Sets/overwrites key and term directly + * Sets/overwrites key and term directly. * - * @param array $term Key value pair - * @return \Elastica\Filter\Term Filter object + * @param array $term Key value pair + * + * @return $this */ public function setRawTerm(array $term) { @@ -34,11 +33,12 @@ class Term extends AbstractFilter } /** - * Adds a term to the term query + * Adds a term to the term query. + * + * @param string $key Key to query + * @param string|array $value Values(s) for the query. Boost can be set with array * - * @param string $key Key to query - * @param string|array $value Values(s) for the query. Boost can be set with array - * @return \Elastica\Filter\Term Filter object + * @return $this */ public function setTerm($key, $value) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Terms.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Terms.php index 2f7c88e3..c099ab3d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Terms.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Terms.php @@ -1,42 +1,40 @@ <?php - namespace Elastica\Filter; use Elastica\Exception\InvalidException; /** - * Terms filter + * Terms filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/terms-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html */ class Terms extends AbstractFilter { /** - * Terms + * Terms. * * @var array Terms */ protected $_terms = array(); /** - * Params + * Params. * * @var array Params */ protected $_params = array(); /** - * Terms key + * Terms key. * * @var string Terms key */ protected $_key = ''; /** - * Creates terms filter + * Creates terms filter. * * @param string $key Terms key * @param array $terms Terms values @@ -47,11 +45,12 @@ class Terms extends AbstractFilter } /** - * Sets key and terms for the filter + * Sets key and terms for the filter. * - * @param string $key Terms key - * @param array $terms Terms for the query. - * @return \Elastica\Filter\Terms + * @param string $key Terms key + * @param array $terms Terms for the query. + * + * @return $this */ public function setTerms($key, array $terms) { @@ -62,13 +61,15 @@ class Terms extends AbstractFilter } /** - * Set the lookup parameters for this filter - * @param string $key terms key - * @param string|\Elastica\Type $type document type from which to fetch the terms values - * @param string $id id of the document from which to fetch the terms values - * @param string $path the field from which to fetch the values for the filter + * Set the lookup parameters for this filter. + * + * @param string $key terms key + * @param string|\Elastica\Type $type document type from which to fetch the terms values + * @param string $id id of the document from which to fetch the terms values + * @param string $path the field from which to fetch the values for the filter * @param string|array|\Elastica\Index $options An array of options or the index from which to fetch the terms values. Defaults to the current index. - * @return \Elastica\Filter\Terms Filter object + * + * @return $this */ public function setLookup($key, $type, $id, $path, $options = array()) { @@ -79,32 +80,34 @@ class Terms extends AbstractFilter $this->_terms = array( 'type' => $type, 'id' => $id, - 'path' => $path + 'path' => $path, ); - + $index = $options; - if(is_array($options)) { - if(isset($options['index'])) { + if (is_array($options)) { + if (isset($options['index'])) { $index = $options['index']; unset($options['index']); } $this->_terms = array_merge($options, $this->_terms); } - + if (!is_null($index)) { if ($index instanceof \Elastica\Index) { $index = $index->getName(); } $this->_terms['index'] = $index; } + return $this; } /** - * Adds an additional term to the query + * Adds an additional term to the query. + * + * @param string $term Filter term * - * @param string $term Filter term - * @return \Elastica\Filter\Terms Filter object + * @return $this */ public function addTerm($term) { @@ -114,11 +117,13 @@ class Terms extends AbstractFilter } /** - * Converts object to an array + * Converts object to an array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @throws \Elastica\Exception\InvalidException - * @return array data array + * + * @return array */ public function toArray() { @@ -129,4 +134,16 @@ class Terms extends AbstractFilter return array('terms' => $this->_params); } + + /** + * Set execution mode. + * + * @param string $execution Options: "bool", "and", "or", "plain" or "fielddata" + * + * @return $this + */ + public function setExecution($execution) + { + return $this->setParam('execution', (string) $execution); + } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Filter/Type.php b/vendor/ruflin/elastica/lib/Elastica/Filter/Type.php index 8fb58c7d..f9c17813 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Filter/Type.php +++ b/vendor/ruflin/elastica/lib/Elastica/Filter/Type.php @@ -1,42 +1,40 @@ <?php - namespace Elastica\Filter; /** - * Type Filter + * Type Filter. * - * @category Xodoa - * @package Elastica * @author James Wilson <jwilson556@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/type-filter.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-type-filter.html */ class Type extends AbstractFilter { /** - * Type name + * Type name. * * @var string */ protected $_type = null; /** - * Construct Type Filter + * Construct Type Filter. * - * @param string $typeName Type name - * @return \Elastica\Filter\Type + * @param string $type Type name */ - public function __construct($typeName = null) + public function __construct($type = null) { - if ($typeName) { - $this->setType($typeName); + if ($type) { + $this->setType($type); } } /** - * Ads a field with arguments to the range query + * Ads a field with arguments to the range query. * - * @param string $typeName Type name - * @return \Elastica\Filter\Type current object + * @param string $typeName Type name + * + * @return $this */ public function setType($typeName) { @@ -46,15 +44,16 @@ class Type extends AbstractFilter } /** - * Convert object to array + * Convert object to array. * * @see \Elastica\Filter\AbstractFilter::toArray() + * * @return array Filter array */ public function toArray() { return array( - 'type' => array('value' => $this->_type) + 'type' => array('value' => $this->_type), ); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Index.php b/vendor/ruflin/elastica/lib/Elastica/Index.php index 5e1e7138..3b8d431b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Index.php +++ b/vendor/ruflin/elastica/lib/Elastica/Index.php @@ -1,5 +1,4 @@ <?php - namespace Elastica; use Elastica\Exception\InvalidException; @@ -9,53 +8,53 @@ use Elastica\Index\Stats as IndexStats; use Elastica\Index\Status as IndexStatus; /** - * Elastica index object + * Elastica index object. * * Handles reads, deletes and configurations of an index * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Index implements SearchableInterface { /** - * Index name + * Index name. * * @var string Index name */ protected $_name = ''; /** - * Client object + * Client object. * * @var \Elastica\Client Client object */ protected $_client = null; /** - * Creates a new index object + * Creates a new index object. * * All the communication to and from an index goes of this object * - * @param \Elastica\Client $client Client object - * @param string $name Index name + * @param \Elastica\Client $client Client object + * @param string $name Index name + * * @throws \Elastica\Exception\InvalidException */ public function __construct(Client $client, $name) { $this->_client = $client; - if (!is_string($name)) { - throw new InvalidException('Index name should be of type string'); + if (!is_scalar($name)) { + throw new InvalidException('Index name should be a scalar type'); } - $this->_name = $name; + $this->_name = (string) $name; } /** - * Returns a type object for the current index with the given name + * Returns a type object for the current index with the given name. + * + * @param string $type Type name * - * @param string $type Type name * @return \Elastica\Type Type object */ public function getType($type) @@ -64,7 +63,7 @@ class Index implements SearchableInterface } /** - * Returns the current status of the index + * Returns the current status of the index. * * @return \Elastica\Index\Status Index status */ @@ -74,7 +73,7 @@ class Index implements SearchableInterface } /** - * Return Index Stats + * Return Index Stats. * * @return \Elastica\Index\Stats */ @@ -94,10 +93,10 @@ class Index implements SearchableInterface $response = $this->request($path, Request::GET); $data = $response->getData(); - + // Get first entry as if index is an Alias, the name of the mapping is the real name and not alias name $mapping = array_shift($data); - + if (isset($mapping['mappings'])) { return $mapping['mappings']; } @@ -106,7 +105,7 @@ class Index implements SearchableInterface } /** - * Returns the index settings object + * Returns the index settings object. * * @return \Elastica\Index\Settings Settings object */ @@ -116,11 +115,13 @@ class Index implements SearchableInterface } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function updateDocuments(array $docs) { @@ -132,11 +133,13 @@ class Index implements SearchableInterface } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function addDocuments(array $docs) { @@ -148,7 +151,30 @@ class Index implements SearchableInterface } /** - * Deletes the index + * Deletes entries in the db based on a query. + * + * @param \Elastica\Query|string $query Query object + * @param array $options Optional params + * + * @return \Elastica\Response + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html + */ + public function deleteByQuery($query, array $options = array()) + { + if (is_string($query)) { + // query_string queries are not supported for delete by query operations + $options['q'] = $query; + + return $this->request('_query', Request::DELETE, array(), $options); + } + $query = Query::create($query); + + return $this->request('_query', Request::DELETE, array('query' => $query->getQuery()), $options); + } + + /** + * Deletes the index. * * @return \Elastica\Response Response object */ @@ -160,11 +186,13 @@ class Index implements SearchableInterface } /** - * Uses _bulk to delete documents from the server + * Uses _bulk to delete documents from the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function deleteDocuments(array $docs) { @@ -176,24 +204,27 @@ class Index implements SearchableInterface } /** - * Optimizes search index + * Optimizes search index. * * Detailed arguments can be found here in the link * - * @param array $args OPTIONAL Additional arguments + * @param array $args OPTIONAL Additional arguments + * * @return array Server response - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-optimize.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-optimize.html */ public function optimize($args = array()) { - $this->request('_optimize', Request::POST, array(), $args); + return $this->request('_optimize', Request::POST, array(), $args); } /** - * Refreshes the index + * Refreshes the index. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-refresh.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html */ public function refresh() { @@ -201,16 +232,19 @@ class Index implements SearchableInterface } /** - * Creates a new index with the given arguments + * Creates a new index with the given arguments. * - * @param array $args OPTIONAL Arguments to use + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html + * + * @param array $args OPTIONAL Arguments to use * @param bool|array $options OPTIONAL * bool=> Deletes index first if already exists (default = false). * array => Associative array of options (option=>value) + * * @throws \Elastica\Exception\InvalidException * @throws \Elastica\Exception\ResponseException - * @return array Server response - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-create-index.html + * + * @return array Server response */ public function create(array $args = array(), $options = null) { @@ -240,7 +274,7 @@ class Index implements SearchableInterface $query = array('routing' => $value); break; default: - throw new InvalidException('Invalid option ' . $key); + throw new InvalidException('Invalid option '.$key); break; } } @@ -251,7 +285,7 @@ class Index implements SearchableInterface } /** - * Checks if the given index is already created + * Checks if the given index is already created. * * @return bool True if index exists */ @@ -260,12 +294,13 @@ class Index implements SearchableInterface $response = $this->getClient()->request($this->getName(), Request::HEAD); $info = $response->getTransferInfo(); - return (bool)($info['http_code'] == 200); + return (bool) ($info['http_code'] == 200); } /** - * @param string $query - * @param int|array $options + * @param string|array|\Elastica\Query $query + * @param int|array $options + * * @return \Elastica\Search */ public function createSearch($query = '', $options = null) @@ -278,11 +313,13 @@ class Index implements SearchableInterface } /** - * Searches in this index + * Searches in this index. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) + * + * @return \Elastica\ResultSet ResultSet with all results inside * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) - * @return \Elastica\ResultSet ResultSet with all results inside * @see \Elastica\SearchableInterface::search */ public function search($query = '', $options = null) @@ -293,10 +330,12 @@ class Index implements SearchableInterface } /** - * Counts results of query + * Counts results of query. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return int number of documents matching the query * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return int number of documents matching the query * @see \Elastica\SearchableInterface::count */ public function count($query = '') @@ -307,21 +346,23 @@ class Index implements SearchableInterface } /** - * Opens an index + * Opens an index. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-open-close.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html */ public function open() { - $this->request('_open', Request::POST); + return $this->request('_open', Request::POST); } /** - * Closes the index + * Closes the index. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-open-close.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html */ public function close() { @@ -329,7 +370,7 @@ class Index implements SearchableInterface } /** - * Returns the index name + * Returns the index name. * * @return string Index name */ @@ -339,7 +380,7 @@ class Index implements SearchableInterface } /** - * Returns index client + * Returns index client. * * @return \Elastica\Client Index client object */ @@ -349,12 +390,14 @@ class Index implements SearchableInterface } /** - * Adds an alias to the current index + * Adds an alias to the current index. + * + * @param string $name Alias name + * @param bool $replace OPTIONAL If set, an existing alias will be replaced * - * @param string $name Alias name - * @param bool $replace OPTIONAL If set, an existing alias will be replaced * @return \Elastica\Response Response - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-aliases.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html */ public function addAlias($name, $replace = false) { @@ -375,11 +418,13 @@ class Index implements SearchableInterface } /** - * Removes an alias pointing to the current index + * Removes an alias pointing to the current index. + * + * @param string $name Alias name * - * @param string $name Alias name * @return \Elastica\Response Response - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-aliases.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html */ public function removeAlias($name) { @@ -391,10 +436,11 @@ class Index implements SearchableInterface } /** - * Clears the cache of an index + * Clears the cache of an index. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-clearcache.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-clearcache.html */ public function clearCache() { @@ -404,24 +450,27 @@ class Index implements SearchableInterface } /** - * Flushes the index to storage + * Flushes the index to storage. * * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-flush.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html */ public function flush($refresh = false) { $path = '_flush'; + return $this->request($path, Request::POST, array(), array('refresh' => $refresh)); } /** - * Can be used to change settings during runtime. One example is to use - * if for bulk updating {@link http://www.elasticsearch.org/blog/2011/03/23/update-settings.html} + * Can be used to change settings during runtime. One example is to use it for bulk updating. + * + * @param array $data Data array * - * @param array $data Data array * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html */ public function setSettings(array $data) { @@ -429,34 +478,38 @@ class Index implements SearchableInterface } /** - * Makes calls to the elasticsearch server based on this index + * Makes calls to the elasticsearch server based on this index. + * + * @param string $path Path to call + * @param string $method Rest method to use (GET, POST, DELETE, PUT) + * @param array $data OPTIONAL Arguments as array + * @param array $query OPTIONAL Query params * - * @param string $path Path to call - * @param string $method Rest method to use (GET, POST, DELETE, PUT) - * @param array $data OPTIONAL Arguments as array - * @param array $query OPTIONAL Query params * @return \Elastica\Response Response object */ public function request($path, $method, $data = array(), array $query = array()) { - $path = $this->getName() . '/' . $path; + $path = $this->getName().'/'.$path; return $this->getClient()->request($path, $method, $data, $query); } /** - * Analyzes a string + * Analyzes a string. * * Detailed arguments can be found here in the link * - * @param string $text String to be analyzed - * @param array $args OPTIONAL Additional arguments + * @param string $text String to be analyzed + * @param array $args OPTIONAL Additional arguments + * * @return array Server response - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-analyze.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html */ public function analyze($text, $args = array()) { $data = $this->request('_analyze', Request::POST, $text, $args)->getData(); + return $data['tokens']; } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Index/Settings.php b/vendor/ruflin/elastica/lib/Elastica/Index/Settings.php index 2f2b90c6..f97e360a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Index/Settings.php +++ b/vendor/ruflin/elastica/lib/Elastica/Index/Settings.php @@ -1,41 +1,41 @@ <?php - namespace Elastica\Index; +use Elastica\Exception\NotFoundException; +use Elastica\Exception\ResponseException; use Elastica\Index as BaseIndex; use Elastica\Request; /** - * Elastica index settings object + * Elastica index settings object. * - * All settings listed in the update settings API (http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html) - * can be changed on a running indices. To make changes like the merge policy (http://www.elasticsearch.org/guide/reference/index-modules/merge.html) + * All settings listed in the update settings API (http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html) + * can be changed on a running indices. To make changes like the merge policy (http://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html) * the index has to be closed first and reopened after the call * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html - * @link http://www.elasticsearch.org/guide/reference/index-modules/merge.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html */ class Settings { /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Stats info + * Stats info. * * @var array Stats info */ protected $_data = array(); /** - * Index + * Index. * * @var \Elastica\Index Index object */ @@ -44,7 +44,7 @@ class Settings const DEFAULT_REFRESH_INTERVAL = '1s'; /** - * Construct + * Construct. * * @param \Elastica\Index $index Index object */ @@ -54,53 +54,64 @@ class Settings } /** - * Returns the current settings of the index + * Returns the current settings of the index. * * If param is set, only specified setting is return. * 'index.' is added in front of $setting. * - * @param string $setting OPTIONAL Setting name to return + * @param string $setting OPTIONAL Setting name to return + * * @return array|string|null Settings data - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html */ public function get($setting = '') { $requestData = $this->request()->getData(); $data = reset($requestData); + + if (empty($data['settings']) || empty($data['settings']['index'])) { + // should not append, the request should throw a ResponseException + throw new NotFoundException('Index '.$this->getIndex()->getName().' not found'); + } $settings = $data['settings']['index']; - if (!empty($setting)) { - if (isset($settings[$setting])) { - return $settings[$setting]; - } else { - if (strpos($setting, '.') !== false) { - // translate old dot-notation settings to nested arrays - $keys = explode('.', $setting); - foreach ($keys as $key) { - if (isset($settings[$key])) { - $settings = $settings[$key]; - } else { - return null; - } + if (!$setting) { + // return all array + return $settings; + } + + if (isset($settings[$setting])) { + return $settings[$setting]; + } else { + if (strpos($setting, '.') !== false) { + // translate old dot-notation settings to nested arrays + $keys = explode('.', $setting); + foreach ($keys as $key) { + if (isset($settings[$key])) { + $settings = $settings[$key]; + } else { + return; } - return $settings; } - return null; + + return $settings; } - } - return $settings; + return; + } } /** - * Sets the number of replicas + * Sets the number of replicas. + * + * @param int $replicas Number of replicas * - * @param int $replicas Number of replicas * @return \Elastica\Response Response object */ public function setNumberOfReplicas($replicas) { - $replicas = (int)$replicas; + $replicas = (int) $replicas; $data = array('number_of_replicas' => $replicas); @@ -108,14 +119,25 @@ class Settings } /** - * Sets the index to read only + * Sets the index to read only. + * + * @param bool $readOnly (default = true) * - * @param bool $readOnly (default = true) * @return \Elastica\Response */ public function setReadOnly($readOnly = true) { - return $this->set(array('blocks.read_only' => $readOnly)); + return $this->set(array('blocks.write' => $readOnly)); + } + + /** + * getReadOnly. + * + * @return bool + */ + public function getReadOnly() + { + return $this->get('blocks.write') === 'true'; // ES returns a string for this setting } /** @@ -123,11 +145,12 @@ class Settings */ public function getBlocksRead() { - return (bool)$this->get('blocks.read'); + return (bool) $this->get('blocks.read'); } /** - * @param bool $state OPTIONAL (default = true) + * @param bool $state OPTIONAL (default = true) + * * @return \Elastica\Response */ public function setBlocksRead($state = true) @@ -142,18 +165,19 @@ class Settings */ public function getBlocksWrite() { - return (bool)$this->get('blocks.write'); + return (bool) $this->get('blocks.write'); } /** - * @param bool $state OPTIONAL (default = true) + * @param bool $state OPTIONAL (default = true) + * * @return \Elastica\Response */ public function setBlocksWrite($state = true) { $state = $state ? 1 : 0; - return $this->set(array('blocks.write' => (int)$state)); + return $this->set(array('blocks.write' => $state)); } /** @@ -161,27 +185,41 @@ class Settings */ public function getBlocksMetadata() { - return (bool)$this->get('blocks.metadata'); + // TODO will have to be replace by block.metadata.write once https://github.com/elasticsearch/elasticsearch/pull/9203 has been fixed + // the try/catch will have to be remove too + try { + return (bool) $this->get('blocks.metadata'); + } catch (ResponseException $e) { + if (strpos($e->getMessage(), 'ClusterBlockException') !== false) { + // hacky way to test if the metadata is blocked since bug 9203 is not fixed + return true; + } else { + throw $e; + } + } } /** - * @param bool $state OPTIONAL (default = true) + * @param bool $state OPTIONAL (default = true) + * * @return \Elastica\Response */ public function setBlocksMetadata($state = true) { + // TODO will have to be replace by block.metadata.write once https://github.com/elasticsearch/elasticsearch/pull/9203 has been fixed $state = $state ? 1 : 0; - return $this->set(array('blocks.metadata' => (int)$state)); + return $this->set(array('blocks.metadata' => $state)); } /** - * Sets the index refresh interval + * Sets the index refresh interval. * * Value can be for example 3s for 3 seconds or * 5m for 5 minutes. -1 refreshing is disabled. * - * @param int $interval Number of seconds + * @param int $interval Number of milliseconds + * * @return \Elastica\Response Response object */ public function setRefreshInterval($interval) @@ -190,7 +228,7 @@ class Settings } /** - * Returns the refresh interval + * Returns the refresh interval. * * If no interval is set, the default interval is returned * @@ -208,22 +246,23 @@ class Settings } /** - * Return merge policy + * Return merge policy. * * @return string Merge policy type */ public function getMergePolicyType() { - return $this->get('merge.policy.type'); } /** - * Sets merge policy + * Sets merge policy. + * + * @param string $type Merge policy type * - * @param string $type Merge policy type * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/index-modules/merge.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html */ public function setMergePolicyType($type) { @@ -235,30 +274,34 @@ class Settings } /** - * Sets the specific merge policies + * Sets the specific merge policies. * * To have this changes made the index has to be closed and reopened * - * @param string $key Merge policy key (for ex. expunge_deletes_allowed) - * @param string $value + * @param string $key Merge policy key (for ex. expunge_deletes_allowed) + * @param string $value + * * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/index-modules/merge.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html */ public function setMergePolicy($key, $value) { $this->getIndex()->close(); - $response = $this->set(array('merge.policy.' . $key => $value)); + $response = $this->set(array('merge.policy.'.$key => $value)); $this->getIndex()->open(); return $response; } /** - * Returns the specific merge policy value + * Returns the specific merge policy value. + * + * @param string $key Merge policy key (for ex. expunge_deletes_allowed) * - * @param string $key Merge policy key (for ex. expunge_deletes_allowed) * @return string Refresh interval - * @link http://www.elasticsearch.org/guide/reference/index-modules/merge.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html */ public function getMergePolicy($key) { @@ -266,13 +309,15 @@ class Settings if (isset($settings['merge']['policy'][$key])) { return $settings['merge']['policy'][$key]; } - return null; + + return; } /** - * Can be used to set/update settings + * Can be used to set/update settings. + * + * @param array $data Arguments * - * @param array $data Arguments * @return \Elastica\Response Response object */ public function set(array $data) @@ -281,7 +326,7 @@ class Settings } /** - * Returns the index object + * Returns the index object. * * @return \Elastica\Index Index object */ @@ -291,7 +336,7 @@ class Settings } /** - * Updates the given settings for the index + * Updates the given settings for the index. * * With elasticsearch 0.16 the following settings are supported * - index.term_index_interval @@ -303,15 +348,18 @@ class Settings * - index.merge.policy * - index.auto_expand_replicas * - * @param array $data OPTIONAL Data array - * @param string $method OPTIONAL Transfer method (default = \Elastica\Request::GET) + * @param array $data OPTIONAL Data array + * @param string $method OPTIONAL Transfer method (default = \Elastica\Request::GET) + * * @return \Elastica\Response Response object */ public function request(array $data = array(), $method = Request::GET) { $path = '_settings'; - $data = array('index' => $data); + if (!empty($data)) { + $data = array('index' => $data); + } return $this->getIndex()->request($path, $method, $data); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Index/Stats.php b/vendor/ruflin/elastica/lib/Elastica/Index/Stats.php index 9312e273..d86903dc 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Index/Stats.php +++ b/vendor/ruflin/elastica/lib/Elastica/Index/Stats.php @@ -1,42 +1,41 @@ <?php - namespace Elastica\Index; + use Elastica\Index as BaseIndex; use Elastica\Request; /** - * Elastica index stats object + * Elastica index stats object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-stats.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html */ class Stats { /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Stats info + * Stats info. * * @var array Stats info */ protected $_data = array(); /** - * Index + * Index. * * @var \Elastica\Index Index object */ protected $_index = null; /** - * Construct + * Construct. * * @param \Elastica\Index $index Index object */ @@ -47,7 +46,7 @@ class Stats } /** - * Returns the raw stats info + * Returns the raw stats info. * * @return array Stats info */ @@ -70,7 +69,7 @@ class Stats if (isset($data[$arg])) { $data = $data[$arg]; } else { - return null; + return; } } @@ -78,7 +77,7 @@ class Stats } /** - * Returns the index object + * Returns the index object. * * @return \Elastica\Index Index object */ @@ -88,7 +87,7 @@ class Stats } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -98,7 +97,7 @@ class Stats } /** - * Reloads all status data of this object + * Reloads all status data of this object. */ public function refresh() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Index/Status.php b/vendor/ruflin/elastica/lib/Elastica/Index/Status.php index 6a343025..0b9dff48 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Index/Status.php +++ b/vendor/ruflin/elastica/lib/Elastica/Index/Status.php @@ -1,43 +1,41 @@ <?php - namespace Elastica\Index; -use Elastica\Cluster; + use Elastica\Index as BaseIndex; use Elastica\Request; /** - * Elastica index status object + * Elastica index status object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-status.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html */ class Status { /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Stats info + * Stats info. * * @var array Stats info */ protected $_data = array(); /** - * Index + * Index. * * @var \Elastica\Index Index object */ protected $_index = null; /** - * Construct + * Construct. * * @param \Elastica\Index $index Index object */ @@ -48,7 +46,7 @@ class Status } /** - * Returns all status info + * Returns all status info. * * @return array Status info */ @@ -72,7 +70,7 @@ class Status if (isset($data[$arg])) { $data = $data[$arg]; } else { - return null; + return; } } @@ -80,31 +78,39 @@ class Status } /** - * Returns all index aliases + * Returns all index aliases. * * @return array Aliases */ public function getAliases() { $responseData = $this->getIndex()->request('_aliases', \Elastica\Request::GET)->getData(); - return array_keys($responseData[$this->getIndex()->getName()]['aliases']); + + $data = $responseData[$this->getIndex()->getName()]; + if (!empty($data['aliases'])) { + return array_keys($data['aliases']); + } + + return array(); } /** - * Returns all index settings + * Returns all index settings. * * @return array Index settings */ public function getSettings() { $responseData = $this->getIndex()->request('_settings', \Elastica\Request::GET)->getData(); + return $responseData[$this->getIndex()->getName()]['settings']; } /** - * Checks if the index has the given alias + * Checks if the index has the given alias. + * + * @param string $name Alias name * - * @param string $name Alias name * @return bool */ public function hasAlias($name) @@ -113,7 +119,7 @@ class Status } /** - * Returns the index object + * Returns the index object. * * @return \Elastica\Index Index object */ @@ -123,7 +129,7 @@ class Status } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -133,7 +139,7 @@ class Status } /** - * Reloads all status data of this object + * Reloads all status data of this object. */ public function refresh() { diff --git a/vendor/ruflin/elastica/lib/Elastica/JSON.php b/vendor/ruflin/elastica/lib/Elastica/JSON.php index 07869821..921bc484 100644 --- a/vendor/ruflin/elastica/lib/Elastica/JSON.php +++ b/vendor/ruflin/elastica/lib/Elastica/JSON.php @@ -1,23 +1,22 @@ <?php - namespace Elastica; use Elastica\Exception\JSONParseException; /** - * Elastica JSON tools - * - * @package Elastica + * Elastica JSON tools. */ class JSON { /** - * Parse JSON string to an array + * Parse JSON string to an array. * - * @param string $json JSON string to parse - * @return array PHP array representation of JSON string * @link http://php.net/manual/en/function.json-decode.php - * @link http://www.php.net/manual/en/function.json-last-error.php + * @link http://php.net/manual/en/function.json-last-error.php + * + * @param string $json JSON string to parse + * + * @return array PHP array representation of JSON string */ public static function parse(/* inherit from json_decode */) { @@ -43,11 +42,13 @@ class JSON } /** - * Convert input to JSON string with standard options + * Convert input to JSON string with standard options. + * + * @link http://php.net/manual/en/function.json-encode.php * * @param mixed check args for PHP function json_encode + * * @return string Valid JSON representation of $input - * @link http://php.net/manual/en/function.json-encode.php */ public static function stringify(/* inherit from json_encode */) { @@ -57,8 +58,7 @@ class JSON // allow special options value for Elasticsearch compatibility if (sizeof($args) > 1 && $args[1] === 'JSON_ELASTICSEARCH') { // Use built in JSON constants if available (php >= 5.4) - $args[1] = (defined('JSON_UNESCAPED_SLASHES') ? JSON_UNESCAPED_SLASHES : 64) - | (defined('JSON_UNESCAPED_UNICODE') ? JSON_UNESCAPED_UNICODE : 256); + $args[1] = defined('JSON_UNESCAPED_UNICODE') ? JSON_UNESCAPED_UNICODE : 256; } // run encode and output diff --git a/vendor/ruflin/elastica/lib/Elastica/Log.php b/vendor/ruflin/elastica/lib/Elastica/Log.php index b246a7b1..c2f0c18a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Log.php +++ b/vendor/ruflin/elastica/lib/Elastica/Log.php @@ -1,35 +1,31 @@ <?php - namespace Elastica; -use Elastica\JSON; use Psr\Log\AbstractLogger; /** - * Elastica log object + * Elastica log object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Log extends AbstractLogger { /** - * Log path or true if enabled + * Log path or true if enabled. * * @var string|bool */ protected $_log = true; /** - * Last logged message + * Last logged message. * * @var string Last logged message */ protected $_lastMessage = ''; /** - * Inits log object + * Inits log object. * * @param string|bool String to set a specific file for logging */ @@ -39,11 +35,12 @@ class Log extends AbstractLogger } /** - * Log a message + * Log a message. * - * @param mixed $level + * @param mixed $level * @param string $message - * @param array $context + * @param array $context + * * @return null|void */ public function log($level, $message, array $context = array()) @@ -52,18 +49,18 @@ class Log extends AbstractLogger $this->_lastMessage = JSON::stringify($context); if (!empty($this->_log) && is_string($this->_log)) { - error_log($this->_lastMessage . PHP_EOL, 3, $this->_log); + error_log($this->_lastMessage.PHP_EOL, 3, $this->_log); } else { error_log($this->_lastMessage); } - } /** - * Enable/disable log or set log path + * Enable/disable log or set log path. + * + * @param bool|string $log Enables log or sets log path * - * @param bool|string $log Enables log or sets log path - * @return \Elastica\Log + * @return $this */ public function setLog($log) { @@ -73,7 +70,7 @@ class Log extends AbstractLogger } /** - * Return last logged message + * Return last logged message. * * @return string Last logged message */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Multi/ResultSet.php b/vendor/ruflin/elastica/lib/Elastica/Multi/ResultSet.php index a0df5785..4d4186af 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Multi/ResultSet.php +++ b/vendor/ruflin/elastica/lib/Elastica/Multi/ResultSet.php @@ -1,44 +1,42 @@ <?php - namespace Elastica\Multi; + use Elastica\Exception\InvalidException; use Elastica\Response; -use Elastica\Search as BaseSearch; use Elastica\ResultSet as BaseResultSet; +use Elastica\Search as BaseSearch; /** * Elastica multi search result set - * List of result sets for each search request + * List of result sets for each search request. * - * @category Xodoa - * @package Elastica * @author munkie */ class ResultSet implements \Iterator, \ArrayAccess, \Countable { /** - * Result Sets + * Result Sets. * * @var array|\Elastica\ResultSet[] Result Sets */ protected $_resultSets = array(); /** - * Current position + * Current position. * * @var int Current position */ protected $_position = 0; /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response; /** - * Constructs ResultSet object + * Constructs ResultSet object. * * @param \Elastica\Response $response * @param array|\Elastica\Search[] $searches @@ -50,8 +48,9 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * @param \Elastica\Response $response - * @param array|\Elastica\Search[] $searches + * @param \Elastica\Response $response + * @param array|\Elastica\Search[] $searches + * * @throws \Elastica\Exception\InvalidException */ protected function _init(Response $response, array $searches) @@ -65,9 +64,9 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable $currentSearch = each($searches); if ($currentSearch === false) { - throw new InvalidException('No result found for search #' . $key); + throw new InvalidException('No result found for search #'.$key); } elseif (!$currentSearch['value'] instanceof BaseSearch) { - throw new InvalidException('Invalid object for search #' . $key . ' provided. Should be Elastica\Search'); + throw new InvalidException('Invalid object for search #'.$key.' provided. Should be Elastica\Search'); } $search = $currentSearch['value']; @@ -88,7 +87,7 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -98,7 +97,7 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * There is at least one result set with error + * There is at least one result set with error. * * @return bool */ @@ -126,7 +125,6 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * @return void */ public function next() { @@ -150,7 +148,6 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * @return void */ public function rewind() { @@ -166,8 +163,9 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable } /** - * @param string|int $offset - * @return boolean true on success or false on failure. + * @param string|int $offset + * + * @return bool true on success or false on failure. */ public function offsetExists($offset) { @@ -176,6 +174,7 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable /** * @param mixed $offset + * * @return mixed Can return all value types. */ public function offsetGet($offset) @@ -186,7 +185,6 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable /** * @param mixed $offset * @param mixed $value - * @return void */ public function offsetSet($offset, $value) { @@ -199,7 +197,6 @@ class ResultSet implements \Iterator, \ArrayAccess, \Countable /** * @param mixed $offset - * @return void */ public function offsetUnset($offset) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Multi/Search.php b/vendor/ruflin/elastica/lib/Elastica/Multi/Search.php index a9874eb2..294fc0a7 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Multi/Search.php +++ b/vendor/ruflin/elastica/lib/Elastica/Multi/Search.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Multi; use Elastica\Client; @@ -8,12 +7,11 @@ use Elastica\Request; use Elastica\Search as BaseSearch; /** - * Elastica multi search + * Elastica multi search. * - * @category Xodoa - * @package Elastica * @author munkie - * @link http://www.elasticsearch.org/guide/reference/api/multi-search.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html */ class Search { @@ -33,7 +31,7 @@ class Search protected $_client; /** - * Constructs search object + * Constructs search object. * * @param \Elastica\Client $client Client object */ @@ -51,8 +49,9 @@ class Search } /** - * @param \Elastica\Client $client - * @return \Elastica\Multi\Search + * @param \Elastica\Client $client + * + * @return $this */ public function setClient(Client $client) { @@ -62,7 +61,7 @@ class Search } /** - * @return \Elastica\Multi\Search + * @return $this */ public function clearSearches() { @@ -71,25 +70,27 @@ class Search return $this; } - /** - * @param \Elastica\Search $search - * @param string $key Optional key - * @return \Elastica\Multi\Search - */ + /** + * @param \Elastica\Search $search + * @param string $key Optional key + * + * @return $this + */ public function addSearch(BaseSearch $search, $key = null) { if ($key) { - $this->_searches[$key] = $search; + $this->_searches[$key] = $search; } else { - $this->_searches[] = $search; + $this->_searches[] = $search; } return $this; } /** - * @param array|\Elastica\Search[] $searches - * @return \Elastica\Multi\Search + * @param array|\Elastica\Search[] $searches + * + * @return $this */ public function addSearches(array $searches) { @@ -101,8 +102,9 @@ class Search } /** - * @param array|\Elastica\Search[] $searches - * @return \Elastica\Multi\Search + * @param array|\Elastica\Search[] $searches + * + * @return $this */ public function setSearches(array $searches) { @@ -121,8 +123,9 @@ class Search } /** - * @param string $searchType - * @return \Elastica\Multi\Search + * @param string $searchType + * + * @return $this */ public function setSearchType($searchType) { @@ -155,30 +158,32 @@ class Search { $data = ''; foreach ($this->getSearches() as $search) { - $data.= $this->_getSearchData($search); + $data .= $this->_getSearchData($search); } return $data; } /** - * @param \Elastica\Search $search + * @param \Elastica\Search $search + * * @return string */ protected function _getSearchData(BaseSearch $search) { $header = $this->_getSearchDataHeader($search); - $header = (empty($header)) ? new \stdClass : $header; + $header = (empty($header)) ? new \stdClass() : $header; $query = $search->getQuery(); - $data = JSON::stringify($header) . "\n"; - $data.= JSON::stringify($query->toArray()) . "\n"; + $data = JSON::stringify($header)."\n"; + $data .= JSON::stringify($query->toArray())."\n"; return $data; } /** - * @param \Elastica\Search $search + * @param \Elastica\Search $search + * * @return array */ protected function _getSearchDataHeader(BaseSearch $search) diff --git a/vendor/ruflin/elastica/lib/Elastica/Node.php b/vendor/ruflin/elastica/lib/Elastica/Node.php index a9684ca6..1453418d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Node.php +++ b/vendor/ruflin/elastica/lib/Elastica/Node.php @@ -1,72 +1,97 @@ <?php - namespace Elastica; + use Elastica\Node\Info; use Elastica\Node\Stats; /** - * Elastica cluster node object + * Elastica cluster node object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-status.html */ class Node { /** - * Client + * Client. * * @var \Elastica\Client */ protected $_client = null; /** - * Node name + * @var string Unique node id + */ + protected $_id = ''; + + /** + * Node name. * * @var string Node name */ protected $_name = ''; /** - * Node stats + * Node stats. * * @var \Elastica\Node\Stats Node Stats */ protected $_stats = null; /** - * Node info + * Node info. * * @var \Elastica\Node\Info Node info */ protected $_info = null; /** - * Create a new node object + * Create a new node object. * - * @param string $name Node name + * @param string $id Node id or name * @param \Elastica\Client $client Node object */ - public function __construct($name, Client $client) + public function __construct($id, Client $client) { - $this->_name = $name; $this->_client = $client; - $this->refresh(); + $this->setId($id); + } + + /** + * @return string Unique node id. Can also be name if id not exists. + */ + public function getId() + { + return $this->_id; } /** - * Get the name of the node + * @param string $id Node id + * + * @return $this Refreshed object + */ + public function setId($id) + { + $this->_id = $id; + + return $this->refresh(); + } + + /** + * Get the name of the node. * * @return string Node name */ public function getName() { + if (empty($this->_name)) { + $this->_name = $this->getInfo()->getName(); + } + return $this->_name; } /** - * Returns the current client object + * Returns the current client object. * * @return \Elastica\Client Client */ @@ -76,7 +101,9 @@ class Node } /** - * Return stats object of the current node + * Return stats object of the current node. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html * * @return \Elastica\Node\Stats Node stats */ @@ -90,7 +117,9 @@ class Node } /** - * Return info object of the current node + * Return info object of the current node. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html * * @return \Elastica\Node\Info Node info object */ @@ -104,7 +133,7 @@ class Node } /** - * Refreshes all node information + * Refreshes all node information. * * This should be called after updating a node to refresh all information */ @@ -115,15 +144,17 @@ class Node } /** - * Shuts this node down + * Shuts this node down. + * + * @param string $delay OPTIONAL Delay after which node is shut down (default = 1s) * - * @param string $delay OPTIONAL Delay after which node is shut down (default = 1s) * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-shutdown.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-shutdown.html */ public function shutdown($delay = '1s') { - $path = '_cluster/nodes/' . $this->getName() . '/_shutdown?delay=' . $delay; + $path = '_cluster/nodes/'.$this->getId().'/_shutdown?delay='.$delay; return $this->_client->request($path, Request::POST); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Node/Info.php b/vendor/ruflin/elastica/lib/Elastica/Node/Info.php index 1d04e53d..25734641 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Node/Info.php +++ b/vendor/ruflin/elastica/lib/Elastica/Node/Info.php @@ -1,53 +1,51 @@ <?php - namespace Elastica\Node; use Elastica\Node as BaseNode; use Elastica\Request; /** - * Elastica cluster node object + * Elastica cluster node object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-status.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html */ class Info { /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Stats data + * Stats data. * * @var array stats data */ protected $_data = array(); /** - * Node + * Node. * * @var \Elastica\Node Node object */ protected $_node = null; /** - * Query parameters + * Query parameters. * * @var array */ protected $_params = array(); /** - * Create new info object for node + * Create new info object for node. * * @param \Elastica\Node $node Node object - * @param array $params List of params to return. Can be: settings, os, process, jvm, thread_pool, network, transport, http + * @param array $params List of params to return. Can be: settings, os, process, jvm, thread_pool, network, transport, http */ public function __construct(BaseNode $node, array $params = array()) { @@ -73,7 +71,7 @@ class Info if (isset($data[$arg])) { $data = $data[$arg]; } else { - return null; + return; } } @@ -81,7 +79,7 @@ class Info } /** - * Return port of the node + * Return port of the node. * * @return string Returns Node port */ @@ -96,7 +94,7 @@ class Info } /** - * Return IP of the node + * Return IP of the node. * * @return string Returns Node ip address */ @@ -111,37 +109,43 @@ class Info } /** - * Return data regarding plugins installed on this node + * Return data regarding plugins installed on this node. + * * @return array plugin data - * @link http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-info/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html */ public function getPlugins() { - if(!in_array('plugins', $this->_params)) { + if (!in_array('plugins', $this->_params)) { //Plugin data was not retrieved when refresh() was called last. Get it now. $this->_params[] = 'plugins'; $this->refresh($this->_params); } + return $this->get('plugins'); } /** - * Check if the given plugin is installed on this node + * Check if the given plugin is installed on this node. + * * @param string $name plugin name + * * @return bool true if the plugin is installed, false otherwise */ public function hasPlugin($name) { - foreach($this->getPlugins() as $plugin) { - if($plugin['name'] == $name) { + foreach ($this->getPlugins() as $plugin) { + if ($plugin['name'] == $name) { return true; } } + return false; } /** - * Return all info data + * Return all info data. * * @return array Data array */ @@ -151,7 +155,7 @@ class Info } /** - * Return node object + * Return node object. * * @return \Elastica\Node Node object */ @@ -161,7 +165,23 @@ class Info } /** - * Returns response object + * @return string Unique node id + */ + public function getId() + { + return $this->_id; + } + + /** + * @return string Node name + */ + public function getName() + { + return $this->_data['name']; + } + + /** + * Returns response object. * * @return \Elastica\Response Response object */ @@ -171,26 +191,30 @@ class Info } /** - * Reloads all nodes information. Has to be called if informations changed + * Reloads all nodes information. Has to be called if informations changed. + * + * @param array $params Params to return (default none). Possible options: settings, os, process, jvm, thread_pool, network, transport, http, plugin * - * @param array $params Params to return (default none). Possible options: settings, os, process, jvm, thread_pool, network, transport, http, plugin * @return \Elastica\Response Response object */ public function refresh(array $params = array()) { $this->_params = $params; - $path = '_nodes/' . $this->getNode()->getName(); + $path = '_nodes/'.$this->getNode()->getId(); if (!empty($params)) { $path .= '?'; foreach ($params as $param) { - $path .= $param . '=true&'; + $path .= $param.'=true&'; } } $this->_response = $this->getNode()->getClient()->request($path, Request::GET); $data = $this->getResponse()->getData(); + $this->_data = reset($data['nodes']); + $this->_id = key($data['nodes']); + $this->getNode()->setId($this->getId()); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Node/Stats.php b/vendor/ruflin/elastica/lib/Elastica/Node/Stats.php index d918e686..1af94b07 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Node/Stats.php +++ b/vendor/ruflin/elastica/lib/Elastica/Node/Stats.php @@ -1,43 +1,41 @@ <?php - namespace Elastica\Node; use Elastica\Node as BaseNode; use Elastica\Request; /** - * Elastica cluster node object + * Elastica cluster node object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-status.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html */ class Stats { /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Stats data + * Stats data. * * @var array stats data */ protected $_data = array(); /** - * Node + * Node. * * @var \Elastica\Node Node object */ protected $_node = null; /** - * Create new stats for node + * Create new stats for node. * * @param \Elastica\Node $node Elastica node object */ @@ -48,7 +46,7 @@ class Stats } /** - * Returns all node stats as array based on the arguments + * Returns all node stats as array based on the arguments. * * Several arguments can be use * get('index', 'test', 'example') @@ -63,7 +61,7 @@ class Stats if (isset($data[$arg])) { $data = $data[$arg]; } else { - return null; + return; } } @@ -71,7 +69,7 @@ class Stats } /** - * Returns all stats data + * Returns all stats data. * * @return array Data array */ @@ -81,7 +79,7 @@ class Stats } /** - * Returns node object + * Returns node object. * * @return \Elastica\Node Node object */ @@ -91,7 +89,7 @@ class Stats } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -101,13 +99,13 @@ class Stats } /** - * Reloads all nodes information. Has to be called if informations changed + * Reloads all nodes information. Has to be called if informations changed. * * @return \Elastica\Response Response object */ public function refresh() { - $path = '_nodes/' . $this->getNode()->getName() . '/stats'; + $path = '_nodes/'.$this->getNode()->getName().'/stats'; $this->_response = $this->getNode()->getClient()->request($path, Request::GET); $data = $this->getResponse()->getData(); $this->_data = reset($data['nodes']); diff --git a/vendor/ruflin/elastica/lib/Elastica/Param.php b/vendor/ruflin/elastica/lib/Elastica/Param.php index 38a45d14..484fbbc3 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Param.php +++ b/vendor/ruflin/elastica/lib/Elastica/Param.php @@ -1,28 +1,26 @@ <?php - namespace Elastica; + use Elastica\Exception\InvalidException; /** - * Class to handle params + * Class to handle params. * * This function can be used to handle params for queries, filter, facets * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Param { /** - * Params + * Params. * * @var array */ protected $_params = array(); /** - * Raw Params + * Raw Params. * * @var array */ @@ -31,7 +29,7 @@ class Param /** * Converts the params to an array. A default implementation exist to create * the an array out of the class name (last part of the class name) - * and the params + * and the params. * * @return array Filter array */ @@ -49,7 +47,7 @@ class Param /** * Param's name * Picks the last part of the class name and makes it snake_case - * You can override this method if you want to change the name + * You can override this method if you want to change the name. * * @return string name */ @@ -59,11 +57,12 @@ class Param } /** - * Sets params not inside params array + * Sets params not inside params array. + * + * @param string $key + * @param mixed $value * - * @param string $key - * @param mixed $value - * @return \Elastica\Param + * @return $this */ protected function _setRawParam($key, $value) { @@ -73,11 +72,12 @@ class Param } /** - * Sets (overwrites) the value at the given key + * Sets (overwrites) the value at the given key. * - * @param string $key Key to set - * @param mixed $value Key Value - * @return \Elastica\Param + * @param string $key Key to set + * @param mixed $value Key Value + * + * @return $this */ public function setParam($key, $value) { @@ -87,10 +87,11 @@ class Param } /** - * Sets (overwrites) all params of this object + * Sets (overwrites) all params of this object. + * + * @param array $params Parameter list * - * @param array $params Parameter list - * @return \Elastica\Param + * @return $this */ public function setParams(array $params) { @@ -104,46 +105,50 @@ class Param * * This function can be used to add an array of params * - * @param string $key Param key - * @param mixed $value Value to set - * @return \Elastica\Param + * @param string $key Param key + * @param mixed $value Value to set + * + * @return $this */ public function addParam($key, $value) { - if($key != null) { + if ($key != null) { if (!isset($this->_params[$key])) { $this->_params[$key] = array(); } $this->_params[$key][] = $value; } else { - $this->_params = $value; + $this->_params = $value; } return $this; } /** - * Returns a specific param + * Returns a specific param. + * + * @param string $key Key to return * - * @param string $key Key to return - * @return mixed Key value * @throws \Elastica\Exception\InvalidException If requested key is not set + * + * @return mixed Key value */ public function getParam($key) { if (!$this->hasParam($key)) { - throw new InvalidException('Param ' . $key . ' does not exist'); + throw new InvalidException('Param '.$key.' does not exist'); } return $this->_params[$key]; } /** - * Test if a param is set + * Test if a param is set. + * + * @param string $key Key to test * - * @param string $key Key to test - * @return boolean True if the param is set, false otherwise + * @return bool True if the param is set, false otherwise */ public function hasParam($key) { @@ -151,7 +156,7 @@ class Param } /** - * Returns the params array + * Returns the params array. * * @return array Params */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Percolator.php b/vendor/ruflin/elastica/lib/Elastica/Percolator.php index 2ec312b9..98d0490a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Percolator.php +++ b/vendor/ruflin/elastica/lib/Elastica/Percolator.php @@ -1,26 +1,44 @@ <?php - namespace Elastica; /** - * Percolator class + * Percolator class. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/percolate/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html */ class Percolator { + const EXTRA_FILTER = 'filter'; + const EXTRA_QUERY = 'query'; + const EXTRA_SIZE = 'size'; + const EXTRA_TRACK_SCORES = 'track_scores'; + const EXTRA_SORT = 'sort'; + const EXTRA_FACETS = 'facets'; + const EXTRA_AGGS = 'aggs'; + const EXTRA_HIGHLIGHT = 'highlight'; + + private $_extraRequestBodyOptions = array( + self::EXTRA_FILTER, + self::EXTRA_QUERY, + self::EXTRA_SIZE, + self::EXTRA_TRACK_SCORES, + self::EXTRA_SORT, + self::EXTRA_FACETS, + self::EXTRA_AGGS, + self::EXTRA_HIGHLIGHT, + ); + /** - * Index object + * Index object. * * @var \Elastica\Index */ protected $_index = null; /** - * Construct new percolator + * Construct new percolator. * * @param \Elastica\Index $index */ @@ -32,15 +50,16 @@ class Percolator /** * Registers a percolator query, with optional extra fields to include in the registered query. * - * @param string $name Query name - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to add - * @param array $fields Extra fields to include in the registered query - * and can be used to filter executed queries. + * @param string $name Query name + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to add + * @param array $fields Extra fields to include in the registered query + * and can be used to filter executed queries. + * * @return \Elastica\Response */ public function registerQuery($name, $query, $fields = array()) { - $path = $this->_index->getName() . '/.percolator/' . $name; + $path = $this->_index->getName().'/.percolator/'.$name; $query = Query::create($query); $data = array_merge($query->toArray(), $fields); @@ -49,58 +68,100 @@ class Percolator } /** - * Removes a percolator query - * @param string $name query name + * Removes a percolator query. + * + * @param string $name query name + * * @return \Elastica\Response */ public function unregisterQuery($name) { - $path = $this->_index->getName() . '/.percolator/' . $name; + $path = $this->_index->getName().'/.percolator/'.$name; return $this->_index->getClient()->request($path, Request::DELETE); } /** - * Match a document to percolator queries + * Match a document to percolator queries. * - * @param \Elastica\Document $doc - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to filter the percolator queries which + * @param \Elastica\Document $doc + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to filter the percolator queries which * are executed. - * @param string $type - * @param array $params + * @param string $type + * @param array $params Supports setting additional request body options to the percolate request. + * [ Percolator::EXTRA_FILTER, + * Percolator::EXTRA_QUERY, + * Percolator::EXTRA_SIZE, + * Percolator::EXTRA_TRACK_SCORES, + * Percolator::EXTRA_SORT, + * Percolator::EXTRA_FACETS, + * Percolator::EXTRA_AGGS, + * Percolator::EXTRA_HIGHLIGHT ] + * * @return array With matching registered queries. */ public function matchDoc(Document $doc, $query = null, $type = 'type', $params = array()) { - $path = $this->_index->getName() . '/' . $type . '/_percolate'; + $path = $this->_index->getName().'/'.$type.'/_percolate'; $data = array('doc' => $doc->getData()); + $this->_applyAdditionalRequestBodyOptions($params, $data); + return $this->_percolate($path, $query, $data, $params); } /** - * Percolating an existing document + * Percolating an existing document. * - * @param string $id - * @param string $type - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to filter the percolator queries which + * @param string $id + * @param string $type + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query Query to filter the percolator queries which * are executed. - * @param array $params + * @param array $params Supports setting additional request body options to the percolate request. + * [ Percolator::EXTRA_FILTER, + * Percolator::EXTRA_QUERY, + * Percolator::EXTRA_SIZE, + * Percolator::EXTRA_TRACK_SCORES, + * Percolator::EXTRA_SORT, + * Percolator::EXTRA_FACETS, + * Percolator::EXTRA_AGGS, + * Percolator::EXTRA_HIGHLIGHT ] + * * @return array With matching registered queries. */ public function matchExistingDoc($id, $type, $query = null, $params = array()) { $id = urlencode($id); - $path = $this->_index->getName() . '/' . $type . '/'. $id . '/_percolate'; + $path = $this->_index->getName().'/'.$type.'/'.$id.'/_percolate'; + + $data = array(); + $this->_applyAdditionalRequestBodyOptions($params, $data); - return $this->_percolate($path, $query, array(), $params); + return $this->_percolate($path, $query, $data, $params); + } + + /** + * Process the provided parameters and apply them to the data array. + * + * @param &$params + * @param &$data + */ + protected function _applyAdditionalRequestBodyOptions(&$params, &$data) + { + foreach ($params as $key => $value) { + if (in_array($key, $this->_extraRequestBodyOptions)) { + $data[$key] = $params[$key]; + unset($params[$key]); + } + } } /** - * @param string $path - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query] $query [description] - * @param array $data - * @param array $params + * @param string $path + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query] $query [description] + * @param array $data + * @param array $params + * * @return array */ protected function _percolate($path, $query, $data = array(), $params = array()) @@ -117,11 +178,12 @@ class Percolator if (isset($data['matches'])) { return $data['matches']; } + return array(); } /** - * Return index object + * Return index object. * * @return \Elastica\Index */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Query.php b/vendor/ruflin/elastica/lib/Elastica/Query.php index 2f37f2ea..175c8c95 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query.php @@ -1,6 +1,6 @@ <?php - namespace Elastica; + use Elastica\Aggregation\AbstractAggregation; use Elastica\Exception\InvalidException; use Elastica\Exception\NotImplementedException; @@ -10,36 +10,34 @@ use Elastica\Query\AbstractQuery; use Elastica\Query\MatchAll; use Elastica\Query\QueryString; use Elastica\Suggest\AbstractSuggest; -use Elastica\Suggest; /** - * Elastica query object + * Elastica query object. * * Creates different types of queries * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html */ class Query extends Param { /** - * Params + * Params. * * @var array Params */ protected $_params = array(); - + /** - * Suggest query or not - * - * @var int Suggest - */ + * Suggest query or not. + * + * @var int Suggest + */ protected $_suggest = 0; /** - * Creates a query object + * Creates a query object. * * @param array|\Elastica\Query\AbstractQuery $query OPTIONAL Query object (default = null) */ @@ -55,24 +53,26 @@ class Query extends Param } /** - * Transforms a string or an array to a query object + * Transforms a string or an array to a query object. * * If query is empty, * - * @param mixed $query + * @param mixed $query + * * @throws \Elastica\Exception\NotImplementedException - * @return \Elastica\Query + * + * @return self */ public static function create($query) { switch (true) { - case $query instanceof Query: + case $query instanceof self: return $query; case $query instanceof AbstractQuery: return new self($query); case $query instanceof AbstractFilter: $newQuery = new self(); - $newQuery->setFilter($query); + $newQuery->setPostFilter($query); return $newQuery; case empty($query): @@ -94,10 +94,11 @@ class Query extends Param } /** - * Sets query as raw array. Will overwrite all already set arguments + * Sets query as raw array. Will overwrite all already set arguments. * - * @param array $query Query array - * @return \Elastica\Query Query object + * @param array $query Query array + * + * @return $this */ public function setRawQuery(array $query) { @@ -107,10 +108,11 @@ class Query extends Param } /** - * Sets the query + * Sets the query. + * + * @param \Elastica\Query\AbstractQuery $query Query object * - * @param \Elastica\Query\AbstractQuery $query Query object - * @return \Elastica\Query Query object + * @return $this */ public function setQuery(AbstractQuery $query) { @@ -118,7 +120,7 @@ class Query extends Param } /** - * Gets the query array + * Gets the query array. * * @return array **/ @@ -128,21 +130,28 @@ class Query extends Param } /** - * Set Filter + * Set Filter. + * + * @param \Elastica\Filter\AbstractFilter $filter Filter object + * + * @return $this * - * @param \Elastica\Filter\AbstractFilter $filter Filter object - * @return \Elastica\Query Current object + * @link https://github.com/elasticsearch/elasticsearch/issues/7422 + * @deprecated */ public function setFilter(AbstractFilter $filter) { - return $this->setParam('filter', $filter->toArray()); + trigger_error('Deprecated: Elastica\Query::setFilter() is deprecated. Use Elastica\Query::setPostFilter() instead.', E_USER_DEPRECATED); + + return $this->setPostFilter($filter); } /** - * Sets the start from which the search results should be returned + * Sets the start from which the search results should be returned. + * + * @param int $from * - * @param int $from - * @return \Elastica\Query Query object + * @return $this */ public function setFrom($from) { @@ -151,11 +160,13 @@ class Query extends Param /** * Sets sort arguments for the query - * Replaces existing values + * Replaces existing values. + * + * @param array $sortArgs Sorting arguments * - * @param array $sortArgs Sorting arguments - * @return \Elastica\Query Query object - * @link http://www.elasticsearch.org/guide/reference/api/search/sort.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html */ public function setSort(array $sortArgs) { @@ -163,11 +174,13 @@ class Query extends Param } /** - * Adds a sort param to the query + * Adds a sort param to the query. + * + * @param mixed $sort Sort parameter * - * @param mixed $sort Sort parameter - * @return \Elastica\Query Query object - * @link http://www.elasticsearch.org/guide/reference/api/search/sort.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html */ public function addSort($sort) { @@ -175,11 +188,13 @@ class Query extends Param } /** - * Sets highlight arguments for the query + * Sets highlight arguments for the query. + * + * @param array $highlightArgs Set all highlight arguments * - * @param array $highlightArgs Set all highlight arguments - * @return \Elastica\Query Query object - * @link http://www.elasticsearch.org/guide/reference/api/search/highlighting.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html */ public function setHighlight(array $highlightArgs) { @@ -187,11 +202,13 @@ class Query extends Param } /** - * Adds a highlight argument + * Adds a highlight argument. + * + * @param mixed $highlight Add highlight argument * - * @param mixed $highlight Add highlight argument - * @return \Elastica\Query Query object - * @link http://www.elasticsearch.org/guide/reference/api/search/highlighting.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html */ public function addHighlight($highlight) { @@ -199,23 +216,25 @@ class Query extends Param } /** - * Sets maximum number of results for this query + * Sets maximum number of results for this query. + * + * @param int $size OPTIONAL Maximal number of results for query (default = 10) * - * @param int $size OPTIONAL Maximal number of results for query (default = 10) - * @return \Elastica\Query Query object + * @return $this */ public function setSize($size = 10) { return $this->setParam('size', $size); - } /** - * Alias for setSize + * Alias for setSize. * * @deprecated Use the setSize() method, this method will be removed in future releases - * @param int $limit OPTIONAL Maximal number of results for query (default = 10) - * @return \Elastica\Query Query object + * + * @param int $limit OPTIONAL Maximal number of results for query (default = 10) + * + * @return $this */ public function setLimit($limit = 10) { @@ -223,11 +242,13 @@ class Query extends Param } /** - * Enables explain on the query + * Enables explain on the query. + * + * @param bool $explain OPTIONAL Enabled or disable explain (default = true) + * + * @return $this * - * @param bool $explain OPTIONAL Enabled or disable explain (default = true) - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/reference/api/search/explain.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-explain.html */ public function setExplain($explain = true) { @@ -235,11 +256,13 @@ class Query extends Param } /** - * Enables version on the query + * Enables version on the query. * - * @param bool $version OPTIONAL Enabled or disable version (default = true) - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/reference/api/search/version.html + * @param bool $version OPTIONAL Enabled or disable version (default = true) + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-version.html */ public function setVersion($version = true) { @@ -248,10 +271,14 @@ class Query extends Param /** * Sets the fields to be returned by the search + * NOTICE php will encode modified(or named keys) array into object format in json format request + * so the fields array must a sequence(list) type of array. + * + * @param array $fields Fields to be returned * - * @param array $fields Fields to be returned - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/reference/api/search/fields.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-fields.html */ public function setFields(array $fields) { @@ -259,11 +286,13 @@ class Query extends Param } /** - * Set script fields + * Set script fields. + * + * @param array|\Elastica\ScriptFields $scriptFields Script fields * - * @param array|\Elastica\ScriptFields $scriptFields Script fields - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/reference/api/search/script-fields.html + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-script-fields.html */ public function setScriptFields($scriptFields) { @@ -275,11 +304,12 @@ class Query extends Param } /** - * Adds a Script to the query + * Adds a Script to the query. + * + * @param string $name + * @param \Elastica\Script $script Script object * - * @param string $name - * @param \Elastica\Script $script Script object - * @return \Elastica\Query Query object + * @return $this */ public function addScriptField($name, Script $script) { @@ -289,11 +319,14 @@ class Query extends Param } /** - * Sets all facets for this query object. Replaces existing facets + * Sets all facets for this query object. Replaces existing facets. * - * @param array $facets List of facet objects - * @return \Elastica\Query Query object - * @link http://www.elasticsearch.org/guide/reference/api/search/facets/ + * @param array $facets List of facet objects + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets.html + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ public function setFacets(array $facets) { @@ -306,10 +339,13 @@ class Query extends Param } /** - * Adds a Facet to the query + * Adds a Facet to the query. + * + * @param \Elastica\Facet\AbstractFacet $facet Facet object + * + * @return $this * - * @param \Elastica\Facet\AbstractFacet $facet Facet object - * @return \Elastica\Query Query object + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ public function addFacet(AbstractFacet $facet) { @@ -319,10 +355,11 @@ class Query extends Param } /** - * Adds an Aggregation to the query + * Adds an Aggregation to the query. * * @param AbstractAggregation $agg - * @return \Elastica\Query Query object + * + * @return $this */ public function addAggregation(AbstractAggregation $agg) { @@ -330,11 +367,12 @@ class Query extends Param $this->_params['aggs'] = array(); } $this->_params['aggs'][$agg->getName()] = $agg->toArray(); + return $this; } /** - * Converts all query params to an array + * Converts all query params to an array. * * @return array Query array */ @@ -356,11 +394,13 @@ class Query extends Param } /** - * Allows filtering of documents based on a minimum score + * Allows filtering of documents based on a minimum score. + * + * @param int $minScore Minimum score to filter documents by * - * @param int $minScore Minimum score to filter documents by * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Query Query object + * + * @return $this */ public function setMinScore($minScore) { @@ -372,49 +412,77 @@ class Query extends Param } /** - * Add a suggest term + * Add a suggest term. * - * @param \Elastica\Suggest $suggest suggestion object + * @param \Elastica\Suggest $suggest suggestion object + * + * @return $this */ public function setSuggest(Suggest $suggest) { - $this->addParam(NULL, $suggest->toArray()); + $this->setParams(array_merge( + $this->getParams(), + $suggest->toArray() + )); + $this->_suggest = 1; + + return $this; } /** - * Add a Rescore + * Add a Rescore. + * + * @param mixed $rescore suggestion object * - * @param \Elastica\Rescore\AbstractRescore $suggest suggestion object + * @return $this */ public function setRescore($rescore) { - $this->setParam('rescore', $rescore->toArray()); + if (is_array($rescore)) { + $buffer = array(); + + foreach ($rescore as $rescoreQuery) { + $buffer [] = $rescoreQuery->toArray(); + } + } else { + $buffer = $rescore->toArray(); + } + + return $this->setParam('rescore', $buffer); } /** - * Sets the _source field to be returned with every hit + * Sets the _source field to be returned with every hit. * - * @param array $fields Fields to be returned - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-source-filtering.html + * @param array|bool $params Fields to be returned or false to disable source + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html */ - public function setSource(array $fields) + public function setSource($params) { - return $this->setParam('_source', $fields); + return $this->setParam('_source', $params); } /** - * Sets post_filter argument for the query. The filter is applied after the query has executed - * @param array $post - * @return \Elastica\Query Current object - * @link http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html#_post_filter + * Sets post_filter argument for the query. The filter is applied after the query has executed. + * + * @param array|\Elastica\Filter\AbstractFilter $filter + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-post-filter.html */ - public function setPostFilter(array $post) + public function setPostFilter($filter) { - return $this->setParam("post_filter", $post); + if ($filter instanceof AbstractFilter) { + $filter = $filter->toArray(); + } else { + trigger_error('Deprecated: Elastica\Query::setPostFilter() passing filter as array is deprecated. Pass instance of AbstractFilter instead.', E_USER_DEPRECATED); + } + + return $this->setParam('post_filter', $filter); } } - - - diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/AbstractQuery.php b/vendor/ruflin/elastica/lib/Elastica/Query/AbstractQuery.php index 5b24ace4..fd1c29b0 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/AbstractQuery.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/AbstractQuery.php @@ -1,13 +1,11 @@ <?php - namespace Elastica\Query; + use Elastica\Param; /** * Abstract query object. Should be extended by all query types. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ abstract class AbstractQuery extends Param diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Bool.php b/vendor/ruflin/elastica/lib/Elastica/Query/Bool.php index 2b2c1157..c5bccc54 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Bool.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Bool.php @@ -1,92 +1,15 @@ <?php - namespace Elastica\Query; -use Elastica\Exception\InvalidException; -use Elastica\Query\AbstractQuery; /** - * Bool query + * Bool query. + * + * This class is for backward compatibility reason for all php < 7 versions. For PHP 7 and above use BoolFilter as Bool is reserved. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html */ -class Bool extends AbstractQuery +class Bool extends BoolQuery { - /** - * Add should part to query - * - * @param \Elastica\Query\AbstractQuery|array $args Should query - * @return \Elastica\Query\Bool Current object - */ - public function addShould($args) - { - return $this->_addQuery('should', $args); - } - - /** - * Add must part to query - * - * @param \Elastica\Query\AbstractQuery|array $args Must query - * @return \Elastica\Query\Bool Current object - */ - public function addMust($args) - { - return $this->_addQuery('must', $args); - } - - /** - * Add must not part to query - * - * @param \Elastica\Query\AbstractQuery|array $args Must not query - * @return \Elastica\Query\Bool Current object - */ - public function addMustNot($args) - { - return $this->_addQuery('must_not', $args); - } - - /** - * Adds a query to the current object - * - * @param string $type Query type - * @param \Elastica\Query\AbstractQuery|array $args Query - * @return \Elastica\Query\Bool - * @throws \Elastica\Exception\InvalidException If not valid query - */ - protected function _addQuery($type, $args) - { - if ($args instanceof AbstractQuery) { - $args = $args->toArray(); - } - - if (!is_array($args)) { - throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\AbstractQuery'); - } - - return $this->addParam($type, $args); - } - - /** - * Sets boost value of this query - * - * @param float $boost Boost value - * @return \Elastica\Query\Bool Current object - */ - public function setBoost($boost) - { - return $this->setParam('boost', $boost); - } - - /** - * Set the minimum number of of should match - * - * @param int $minimumNumberShouldMatch Should match minimum - * @return \Elastica\Query\Bool Current object - */ - public function setMinimumNumberShouldMatch($minimumNumberShouldMatch) - { - return $this->setParam('minimum_number_should_match', $minimumNumberShouldMatch); - } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/BoolQuery.php b/vendor/ruflin/elastica/lib/Elastica/Query/BoolQuery.php new file mode 100644 index 00000000..7b8bd4da --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/BoolQuery.php @@ -0,0 +1,111 @@ +<?php +namespace Elastica\Query; + +use Elastica\Exception\InvalidException; + +/** + * Bool query. + * + * @author Nicolas Ruflin <spam@ruflin.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html + */ +class BoolQuery extends AbstractQuery +{ + /** + * Add should part to query. + * + * @param \Elastica\Query\AbstractQuery|array $args Should query + * + * @return $this + */ + public function addShould($args) + { + return $this->_addQuery('should', $args); + } + + /** + * Add must part to query. + * + * @param \Elastica\Query\AbstractQuery|array $args Must query + * + * @return $this + */ + public function addMust($args) + { + return $this->_addQuery('must', $args); + } + + /** + * Add must not part to query. + * + * @param \Elastica\Query\AbstractQuery|array $args Must not query + * + * @return $this + */ + public function addMustNot($args) + { + return $this->_addQuery('must_not', $args); + } + + /** + * Adds a query to the current object. + * + * @param string $type Query type + * @param \Elastica\Query\AbstractQuery|array $args Query + * + * @throws \Elastica\Exception\InvalidException If not valid query + * + * @return $this + */ + protected function _addQuery($type, $args) + { + if ($args instanceof AbstractQuery) { + $args = $args->toArray(); + } + + if (!is_array($args)) { + throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\AbstractQuery'); + } + + return $this->addParam($type, $args); + } + + /** + * Sets boost value of this query. + * + * @param float $boost Boost value + * + * @return $this + */ + public function setBoost($boost) + { + return $this->setParam('boost', $boost); + } + + /** + * Set the minimum number of of should match. + * + * @param int $minimumNumberShouldMatch Should match minimum + * + * @return $this + */ + public function setMinimumNumberShouldMatch($minimumNumberShouldMatch) + { + return $this->setParam('minimum_number_should_match', $minimumNumberShouldMatch); + } + + /** + * Converts array to an object in case no queries are added. + * + * @return array + */ + public function toArray() + { + if (empty($this->_params)) { + $this->_params = new \stdClass(); + } + + return parent::toArray(); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Boosting.php b/vendor/ruflin/elastica/lib/Elastica/Query/Boosting.php index fe429637..95dcde3d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Boosting.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Boosting.php @@ -1,21 +1,23 @@ <?php - namespace Elastica\Query; /** - * Class Boosting - * @package Elastica\Query + * Class Boosting. + * * @author Balazs Nadasdi <yitsushi@gmail.com> - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html */ class Boosting extends AbstractQuery { const NEGATIVE_BOOST = 0.2; /** - * Set the positive query for this Boosting Query + * Set the positive query for this Boosting Query. + * * @param AbstractQuery $query - * @return \Elastica\Query\Boosting + * + * @return $this */ public function setPositiveQuery(AbstractQuery $query) { @@ -23,9 +25,11 @@ class Boosting extends AbstractQuery } /** - * Set the negative query for this Boosting Query + * Set the negative query for this Boosting Query. + * * @param AbstractQuery $query - * @return \Elastica\Query\Boosting + * + * @return $this */ public function setNegativeQuery(AbstractQuery $query) { @@ -33,12 +37,14 @@ class Boosting extends AbstractQuery } /** - * Set the negative_boost parameter for this Boosting Query + * Set the negative_boost parameter for this Boosting Query. + * * @param Float $negativeBoost - * @return \Elastica\Query\Boosting + * + * @return $this */ public function setNegativeBoost($negativeBoost) { - return $this->setParam('negative_boost', (float)$negativeBoost); + return $this->setParam('negative_boost', (float) $negativeBoost); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Builder.php b/vendor/ruflin/elastica/lib/Elastica/Query/Builder.php index 2a5e8baa..55b6b903 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Builder.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Builder.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Query; use Elastica\Exception\InvalidException; @@ -9,10 +8,10 @@ use Elastica\JSON; /** * Query Builder. * - * @category Xodoa - * @package Elastica * @author Chris Gedrim <chris@gedr.im> - * @link http://www.elasticsearch.org/ + * + * @link http://www.elastic.co/ + * @deprecated This builder is deprecated and will be removed. Use new Elastica\QueryBuilder instead. **/ class Builder extends AbstractQuery { @@ -28,21 +27,21 @@ class Builder extends AbstractQuery * * @param string $string JSON encoded string to use as query. * - * @return \Elastica\Query\Builder + * @return self */ public static function factory($string = null) { - return new Builder($string); + return new self($string); } /** - * Constructor + * Constructor. * * @param string $string JSON encoded string to use as query. */ public function __construct($string = null) { - if (! $string == null) { + if (!$string == null) { $this->_string .= substr($string, 1, -1); } } @@ -63,18 +62,21 @@ class Builder extends AbstractQuery public function toArray() { try { - return JSON::parse($this->__toString()); + return JSON::parse($input = $this->__toString()); } catch (JSONParseException $e) { - throw new InvalidException('The query produced is invalid'); + throw new InvalidException(sprintf( + 'The produced query is not a valid json string : "%s"', + $input + )); } } /** * Allow wildcards (*, ?) as the first character in a query. * - * @param boolean $bool Defaults to true. + * @param bool $bool Defaults to true. * - * @return \Elastica\Query\Builder + * @return $this */ public function allowLeadingWildcard($bool = true) { @@ -84,9 +86,9 @@ class Builder extends AbstractQuery /** * Enable best effort analysis of wildcard terms. * - * @param boolean $bool Defaults to true. + * @param bool $bool Defaults to true. * - * @return \Elastica\Query\Builder + * @return $this */ public function analyzeWildcard($bool = true) { @@ -98,7 +100,7 @@ class Builder extends AbstractQuery * * @param string $analyzer Analyzer to use. * - * @return \Elastica\Query\Builder + * @return $this */ public function analyzer($analyzer) { @@ -108,9 +110,9 @@ class Builder extends AbstractQuery /** * Autogenerate phrase queries. * - * @param boolean $bool Defaults to true. + * @param bool $bool Defaults to true. * - * @return \Elastica\Query\Builder + * @return $this */ public function autoGeneratePhraseQueries($bool = true) { @@ -129,7 +131,7 @@ class Builder extends AbstractQuery * * The occurrence types are: must, should, must_not. * - * @return \Elastica\Query\Builder + * @return $this */ public function bool() { @@ -141,7 +143,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function boolClose() { @@ -153,7 +155,7 @@ class Builder extends AbstractQuery * * @param float $boost Defaults to 1.0. * - * @return \Elastica\Query\Builder + * @return $this */ public function boost($boost = 1.0) { @@ -163,7 +165,7 @@ class Builder extends AbstractQuery /** * Close a previously opened brace. * - * @return \Elastica\Query\Builder + * @return $this */ public function close() { @@ -180,7 +182,7 @@ class Builder extends AbstractQuery * * Maps to Lucene ConstantScoreQuery. * - * @return \Elastica\Query\Builder + * @return $this */ public function constantScore() { @@ -192,7 +194,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function constantScoreClose() { @@ -204,7 +206,7 @@ class Builder extends AbstractQuery * * @param string $field Defaults to _all. * - * @return \Elastica\Query\Builder + * @return $this */ public function defaultField($field = '_all') { @@ -220,7 +222,7 @@ class Builder extends AbstractQuery * * @param string $operator Defaults to OR. * - * @return \Elastica\Query\Builder + * @return $this */ public function defaultOperator($operator = 'OR') { @@ -235,7 +237,7 @@ class Builder extends AbstractQuery * produced by any subquery, plus a tie breaking increment for any additional * matching subqueries. * - * @return \Elastica\Query\Builder + * @return $this */ public function disMax() { @@ -247,7 +249,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function disMaxClose() { @@ -257,9 +259,9 @@ class Builder extends AbstractQuery /** * Enable position increments in result queries. * - * @param boolean $bool Defaults to true. + * @param bool $bool Defaults to true. * - * @return \Elastica\Query\Builder + * @return $this */ public function enablePositionIncrements($bool = true) { @@ -269,9 +271,9 @@ class Builder extends AbstractQuery /** * Enables explanation for each hit on how its score was computed. * - * @param boolean $value Turn on / off explain. + * @param bool $value Turn on / off explain. * - * @return \Elastica\Query\Builder + * @return $this */ public function explain($value = true) { @@ -289,7 +291,7 @@ class Builder extends AbstractQuery * Elasticsearch supports more advanced facet implementations, such as * statistical or date histogram facets. * - * @return \Elastica\Query\Builder + * @return $this */ public function facets() { @@ -301,7 +303,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function facetsClose() { @@ -314,12 +316,12 @@ class Builder extends AbstractQuery * @param string $name Field to add. * @param mixed $value Value to set. * - * @return \Elastica\Query\Builder + * @return $this */ public function field($name, $value) { if (is_bool($value)) { - $value = '"'. var_export($value, true) . '"'; + $value = '"'.var_export($value, true).'"'; } elseif (is_array($value)) { $value = '["'.implode('","', $value).'"]'; } else { @@ -348,7 +350,7 @@ class Builder extends AbstractQuery * ->rangeClose() * ->queryClose(); * - * @return \Elastica\Query\Builder + * @return $this */ public function fieldClose() { @@ -360,7 +362,7 @@ class Builder extends AbstractQuery * * @param string $name Field name. * - * @return \Elastica\Query\Builder + * @return $this */ public function fieldOpen($name) { @@ -375,7 +377,7 @@ class Builder extends AbstractQuery * * @param array $fields Array of fields to return. * - * @return \Elastica\Query\Builder + * @return $this */ public function fields(array $fields) { @@ -393,7 +395,7 @@ class Builder extends AbstractQuery /** * Open a 'filter' block. * - * @return \Elastica\Query\Builder + * @return $this */ public function filter() { @@ -403,7 +405,7 @@ class Builder extends AbstractQuery /** * Close a filter block. * - * @return \Elastica\Query\Builder + * @return $this */ public function filterClose() { @@ -413,7 +415,7 @@ class Builder extends AbstractQuery /** * Query. * - * @return \Elastica\Query\Builder + * @return $this */ public function filteredQuery() { @@ -425,7 +427,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function filteredQueryClose() { @@ -435,9 +437,9 @@ class Builder extends AbstractQuery /** * Set the from parameter (offset). * - * @param integer $value Result number to start from. + * @param int $value Result number to start from. * - * @return \Elastica\Query\Builder + * @return $this */ public function from($value = 0) { @@ -449,7 +451,7 @@ class Builder extends AbstractQuery * * @param float $value Defaults to 0.5. * - * @return \Elastica\Query\Builder + * @return $this */ public function fuzzyMinSim($value = 0.5) { @@ -459,9 +461,9 @@ class Builder extends AbstractQuery /** * Set the prefix length for fuzzy queries. * - * @param integer $value Defaults to 0. + * @param int $value Defaults to 0. * - * @return \Elastica\Query\Builder + * @return $this */ public function fuzzyPrefixLength($value = 0) { @@ -475,7 +477,7 @@ class Builder extends AbstractQuery * * @param mixed $value Value to be gt. * - * @return \Elastica\Query\Builder + * @return $this */ public function gt($value) { @@ -489,7 +491,7 @@ class Builder extends AbstractQuery * * @param mixed $value Value to be gte to. * - * @return \Elastica\Query\Builder + * @return $this */ public function gte($value) { @@ -499,9 +501,9 @@ class Builder extends AbstractQuery /** * Automatically lower-case terms of wildcard, prefix, fuzzy, and range queries. * - * @param boolean $bool Defaults to true. + * @param bool $bool Defaults to true. * - * @return \Elastica\Query\Builder + * @return $this */ public function lowercaseExpandedTerms($bool = true) { @@ -515,7 +517,7 @@ class Builder extends AbstractQuery * * @param mixed $value Value to be lt. * - * @return \Elastica\Query\Builder + * @return $this */ public function lt($value) { @@ -529,7 +531,7 @@ class Builder extends AbstractQuery * * @param mixed $value Value to be lte to. * - * @return \Elastica\Query\Builder + * @return $this */ public function lte($value) { @@ -545,13 +547,13 @@ class Builder extends AbstractQuery * * @param float $boost Boost to use. * - * @return \Elastica\Query\Builder + * @return $this */ public function matchAll($boost = null) { $this->fieldOpen('match_all'); - if ( ! $boost == null && is_numeric($boost)) { + if (!$boost == null && is_numeric($boost)) { $this->field('boost', (float) $boost); } @@ -561,9 +563,9 @@ class Builder extends AbstractQuery /** * The minimum number of should clauses to match. * - * @param integer $minimum Minimum number that should match. + * @param int $minimum Minimum number that should match. * - * @return \Elastica\Query\Builder + * @return $this */ public function minimumNumberShouldMatch($minimum) { @@ -573,7 +575,7 @@ class Builder extends AbstractQuery /** * The clause (query) must appear in matching documents. * - * @return \Elastica\Query\Builder + * @return $this */ public function must() { @@ -585,7 +587,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function mustClose() { @@ -598,7 +600,7 @@ class Builder extends AbstractQuery * Note that it is not possible to search on documents that only consists of * a must_not clauses. * - * @return \Elastica\Query\Builder + * @return $this */ public function mustNot() { @@ -610,7 +612,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function mustNotClose() { @@ -620,7 +622,7 @@ class Builder extends AbstractQuery /** * Add an opening brace. * - * @return \Elastica\Query\Builder + * @return $this */ public function open() { @@ -634,9 +636,9 @@ class Builder extends AbstractQuery * * If zero, then exact phrase matches are required. * - * @param integer $value Defaults to 0. + * @param int $value Defaults to 0. * - * @return \Elastica\Query\Builder + * @return $this */ public function phraseSlop($value = 0) { @@ -646,7 +648,7 @@ class Builder extends AbstractQuery /** * Query. * - * @return \Elastica\Query\Builder + * @return $this */ public function prefix() { @@ -658,7 +660,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function prefixClose() { @@ -670,7 +672,7 @@ class Builder extends AbstractQuery * * @param array $queries Array of queries. * - * @return \Elastica\Query\Builder + * @return $this */ public function queries(array $queries) { @@ -688,7 +690,7 @@ class Builder extends AbstractQuery /** * Open a query block. * - * @return \Elastica\Query\Builder + * @return $this */ public function query() { @@ -700,7 +702,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function queryClose() { @@ -712,7 +714,7 @@ class Builder extends AbstractQuery * * A query that uses a query parser in order to parse its content * - * @return \Elastica\Query\Builder + * @return $this */ public function queryString() { @@ -724,7 +726,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function queryStringClose() { @@ -734,7 +736,7 @@ class Builder extends AbstractQuery /** * Open a range block. * - * @return \Elastica\Query\Builder + * @return $this */ public function range() { @@ -746,7 +748,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function rangeClose() { @@ -759,7 +761,7 @@ class Builder extends AbstractQuery * A boolean query with no must clauses, one or more should clauses must * match a document. * - * @return \Elastica\Query\Builder + * @return $this */ public function should() { @@ -771,7 +773,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function shouldClose() { @@ -781,9 +783,9 @@ class Builder extends AbstractQuery /** * Set the size parameter (number of records to return). * - * @param integer $value Number of records to return. + * @param int $value Number of records to return. * - * @return \Elastica\Query\Builder + * @return $this */ public function size($value = 10) { @@ -793,7 +795,7 @@ class Builder extends AbstractQuery /** * Allows to add one or more sort on specific fields. * - * @return \Elastica\Query\Builder + * @return $this */ public function sort() { @@ -805,7 +807,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function sortClose() { @@ -815,10 +817,10 @@ class Builder extends AbstractQuery /** * Add a field to sort on. * - * @param string $name Field to sort. - * @param boolean $reverse Reverse direction. + * @param string $name Field to sort. + * @param bool $reverse Reverse direction. * - * @return \Elastica\Query\Builder + * @return $this */ public function sortField($name, $reverse = false) { @@ -831,12 +833,12 @@ class Builder extends AbstractQuery } /** - * Sort on multiple fields + * Sort on multiple fields. * * @param array $fields Associative array where the keys are field names to sort on, and the * values are the sort order: "asc" or "desc" * - * @return \Elastica\Query\Builder + * @return $this */ public function sortFields(array $fields) { @@ -846,7 +848,7 @@ class Builder extends AbstractQuery $this->_string .= '{"'.$fieldName.'":"'.$order.'"},'; } - $this->_string = rtrim($this->_string, ',') . '],'; + $this->_string = rtrim($this->_string, ',').'],'; return $this; } @@ -858,7 +860,7 @@ class Builder extends AbstractQuery * * The term query maps to Lucene TermQuery. * - * @return \Elastica\Query\Builder + * @return $this */ public function term() { @@ -870,7 +872,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function termClose() { @@ -880,7 +882,7 @@ class Builder extends AbstractQuery /** * Open a 'text_phrase' block. * - * @return \Elastica\Query\Builder + * @return $this */ public function textPhrase() { @@ -890,7 +892,7 @@ class Builder extends AbstractQuery /** * Close a 'text_phrase' block. * - * @return \Elastica\Query\Builder + * @return $this */ public function textPhraseClose() { @@ -902,7 +904,7 @@ class Builder extends AbstractQuery * * @param float $multiplier Multiplier to use. * - * @return \Elastica\Query\Builder + * @return $this */ public function tieBreakerMultiplier($multiplier) { @@ -912,7 +914,7 @@ class Builder extends AbstractQuery /** * Query. * - * @return \Elastica\Query\Builder + * @return $this */ public function wildcard() { @@ -924,7 +926,7 @@ class Builder extends AbstractQuery * * Alias of close() for ease of reading in source. * - * @return \Elastica\Query\Builder + * @return $this */ public function wildcardClose() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Common.php b/vendor/ruflin/elastica/lib/Elastica/Query/Common.php index 6e112769..9ca58d2e 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Common.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Common.php @@ -1,12 +1,10 @@ <?php - namespace Elastica\Query; - /** - * Class Common - * @package Elastica - * @link http://www.elasticsearch.org/guide/reference/query-dsl/common-terms-query/ + * Class Common. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-common-terms-query.html */ class Common extends AbstractQuery { @@ -24,9 +22,9 @@ class Common extends AbstractQuery protected $_queryParams = array(); /** - * @param string $field the field on which to query - * @param string $query the query string - * @param float $cutoffFrequency percentage in decimal form (.001 == 0.1%) + * @param string $field the field on which to query + * @param string $query the query string + * @param float $cutoffFrequency percentage in decimal form (.001 == 0.1%) */ public function __construct($field, $query, $cutoffFrequency) { @@ -36,20 +34,25 @@ class Common extends AbstractQuery } /** - * Set the field on which to query + * Set the field on which to query. + * * @param string $field the field on which to query - * @return \Elastica\Query\Common + * + * @return $this */ public function setField($field) { $this->_field = $field; + return $this; } /** - * Set the query string for this query + * Set the query string for this query. + * * @param string $query - * @return \Elastica\Query\Common + * + * @return $this */ public function setQuery($query) { @@ -57,19 +60,23 @@ class Common extends AbstractQuery } /** - * Set the frequency below which terms will be put in the low frequency group + * Set the frequency below which terms will be put in the low frequency group. + * * @param float $frequency percentage in decimal form (.001 == 0.1%) - * @return \Elastica\Query\Common + * + * @return $this */ public function setCutoffFrequency($frequency) { - return $this->setQueryParam('cutoff_frequency', (float)$frequency); + return $this->setQueryParam('cutoff_frequency', (float) $frequency); } /** - * Set the logic operator for low frequency terms + * Set the logic operator for low frequency terms. + * * @param string $operator see OPERATOR_* class constants for options - * @return \Elastica\Query\Common + * + * @return $this */ public function setLowFrequencyOperator($operator) { @@ -77,9 +84,11 @@ class Common extends AbstractQuery } /** - * Set the logic operator for high frequency terms + * Set the logic operator for high frequency terms. + * * @param string $operator see OPERATOR_* class constants for options - * @return \Elastica\Query\Common + * + * @return $this */ public function setHighFrequencyOperator($operator) { @@ -87,10 +96,13 @@ class Common extends AbstractQuery } /** - * Set the minimum_should_match parameter + * Set the minimum_should_match parameter. + * * @param int|string $minimum minimum number of low frequency terms which must be present - * @return \Elastica\Query\Common - * @link Possible values for minimum_should_match http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html + * + * @return $this + * + * @link Possible values for minimum_should_match http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html */ public function setMinimumShouldMatch($minimum) { @@ -98,19 +110,23 @@ class Common extends AbstractQuery } /** - * Set the boost for this query + * Set the boost for this query. + * * @param float $boost - * @return \Elastica\Query\Common + * + * @return $this */ public function setBoost($boost) { - return $this->setQueryParam('boost', (float)$boost); + return $this->setQueryParam('boost', (float) $boost); } /** - * Set the analyzer for this query + * Set the analyzer for this query. + * * @param string $analyzer - * @return \Elastica\Query\Common + * + * @return $this */ public function setAnalyzer($analyzer) { @@ -118,24 +134,29 @@ class Common extends AbstractQuery } /** - * Enable / disable computation of score factor based on the fraction of all query terms contained in the document + * Enable / disable computation of score factor based on the fraction of all query terms contained in the document. + * * @param bool $disable disable_coord is false by default - * @return \Elastica\Query\Common + * + * @return $this */ public function setDisableCoord($disable = true) { - return $this->setQueryParam('disable_coord', (bool)$disable); + return $this->setQueryParam('disable_coord', (bool) $disable); } /** - * Set a parameter in the body of this query - * @param string $key parameter key - * @param mixed $value parameter value - * @return \Elastica\Query\Common + * Set a parameter in the body of this query. + * + * @param string $key parameter key + * @param mixed $value parameter value + * + * @return $this */ public function setQueryParam($key, $value) { $this->_queryParams[$key] = $value; + return $this; } @@ -145,6 +166,7 @@ class Common extends AbstractQuery public function toArray() { $this->setParam($this->_field, $this->_queryParams); + return parent::toArray(); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/ConstantScore.php b/vendor/ruflin/elastica/lib/Elastica/Query/ConstantScore.php index 16854600..3578606d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/ConstantScore.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/ConstantScore.php @@ -1,20 +1,19 @@ <?php - namespace Elastica\Query; + use Elastica\Filter\AbstractFilter; /** - * Constant score query + * Constant score query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/constant-score-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-constant-score-query.html */ class ConstantScore extends AbstractQuery { /** - * Construct constant score query + * Construct constant score query. * * @param null|\Elastica\Filter\AbstractFilter|array $filter */ @@ -26,10 +25,11 @@ class ConstantScore extends AbstractQuery } /** - * Set filter + * Set filter. * - * @param array|\Elastica\Filter\AbstractFilter $filter - * @return \Elastica\Query\ConstantScore Query object + * @param array|\Elastica\Filter\AbstractFilter $filter + * + * @return $this */ public function setFilter($filter) { @@ -41,10 +41,11 @@ class ConstantScore extends AbstractQuery } /** - * Set query + * Set query. * * @param array|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Query\ConstantScore Query object + * + * @return $this */ public function setQuery($query) { @@ -56,10 +57,11 @@ class ConstantScore extends AbstractQuery } /** - * Set boost + * Set boost. + * + * @param float $boost * - * @param float $boost - * @return \Elastica\Query\ConstantScore + * @return $this */ public function setBoost($boost) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/DisMax.php b/vendor/ruflin/elastica/lib/Elastica/Query/DisMax.php index 4b1d320d..b3c5f252 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/DisMax.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/DisMax.php @@ -1,24 +1,25 @@ <?php - namespace Elastica\Query; + use Elastica\Exception\InvalidException; /** - * DisMax query + * DisMax query. * - * @category Xodoa - * @package Elastica * @author Hung Tran <oohnoitz@gmail.com> - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html */ class DisMax extends AbstractQuery { /** - * Adds a query to the current object + * Adds a query to the current object. + * + * @param \Elastica\Query\AbstractQuery|array $args Query * - * @param \Elastica\Query\AbstractQuery|array $args Query - * @return \Elastica\Query\DisMax * @throws \Elastica\Exception\InvalidException If not valid query + * + * @return $this */ public function addQuery($args) { @@ -34,10 +35,11 @@ class DisMax extends AbstractQuery } /** - * Set boost + * Set boost. + * + * @param float $boost * - * @param float $boost - * @return \Elastica\Query\DisMax + * @return $this */ public function setBoost($boost) { @@ -49,8 +51,9 @@ class DisMax extends AbstractQuery * * If not set, defaults to 0.0 * - * @param float $tieBreaker - * @return \Elastica\Query\DisMax + * @param float $tieBreaker + * + * @return $this */ public function setTieBreaker($tieBreaker = 0.0) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Filtered.php b/vendor/ruflin/elastica/lib/Elastica/Query/Filtered.php index c28d4cdd..ac085037 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Filtered.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Filtered.php @@ -1,36 +1,36 @@ <?php - namespace Elastica\Query; -use Elastica\Filter\AbstractFilter; use Elastica\Exception\InvalidException; +use Elastica\Filter\AbstractFilter; /** - * Filtered query. Needs a query and a filter + * Filtered query. Needs a query and a filter. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/filtered-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html */ class Filtered extends AbstractQuery { /** - * Constructs a filtered query + * Constructs a filtered query. * * @param \Elastica\Query\AbstractQuery $query OPTIONAL Query object * @param \Elastica\Filter\AbstractFilter $filter OPTIONAL Filter object */ - public function __construct(AbstractQuery $query = null, AbstractFilter $filter = null) { + public function __construct(AbstractQuery $query = null, AbstractFilter $filter = null) + { $this->setQuery($query); $this->setFilter($filter); } /** - * Sets a query + * Sets a query. * - * @param \Elastica\Query\AbstractQuery $query Query object - * @return \Elastica\Query\Filtered Current object + * @param \Elastica\Query\AbstractQuery $query Query object + * + * @return $this */ public function setQuery(AbstractQuery $query = null) { @@ -38,10 +38,11 @@ class Filtered extends AbstractQuery } /** - * Sets the filter + * Sets the filter. + * + * @param \Elastica\Filter\AbstractFilter $filter Filter object * - * @param \Elastica\Filter\AbstractFilter $filter Filter object - * @return \Elastica\Query\Filtered Current object + * @return $this */ public function setFilter(AbstractFilter $filter = null) { @@ -69,9 +70,10 @@ class Filtered extends AbstractQuery } /** - * Converts query to array + * Converts query to array. * * @return array Query array + * * @see \Elastica\Query\AbstractQuery::toArray() */ public function toArray() @@ -89,7 +91,7 @@ class Filtered extends AbstractQuery if (empty($filtered)) { throw new InvalidException('A query and/or filter is required'); } - + return array('filtered' => $filtered); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/FunctionScore.php b/vendor/ruflin/elastica/lib/Elastica/Query/FunctionScore.php index 8230c86e..b11454fb 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/FunctionScore.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/FunctionScore.php @@ -1,13 +1,13 @@ <?php - namespace Elastica\Query; + use Elastica\Filter\AbstractFilter; use Elastica\Script; /** - * Class FunctionScore - * @package Elastica\Query - * @link http://www.elasticsearch.org/guide/reference/query-dsl/function-score-query/ + * Class FunctionScore. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html */ class FunctionScore extends AbstractQuery { @@ -32,9 +32,11 @@ class FunctionScore extends AbstractQuery protected $_functions = array(); /** - * Set the child query for this function_score query + * Set the child query for this function_score query. + * * @param AbstractQuery $query - * @return \Elastica\Query\FunctionScore + * + * @return $this */ public function setQuery(AbstractQuery $query) { @@ -43,7 +45,8 @@ class FunctionScore extends AbstractQuery /** * @param AbstractFilter $filter - * @return \Elastica\Param + * + * @return $this */ public function setFilter(AbstractFilter $filter) { @@ -51,113 +54,151 @@ class FunctionScore extends AbstractQuery } /** - * Add a function to the function_score query - * @param string $functionType valid values are DECAY_* constants and script_score - * @param array|float $functionParams the body of the function. See documentation for proper syntax. - * @param AbstractFilter $filter optional filter to apply to the function - * @return \Elastica\Query\FunctionScore + * Add a function to the function_score query. + * + * @param string $functionType valid values are DECAY_* constants and script_score + * @param array|float $functionParams the body of the function. See documentation for proper syntax. + * @param AbstractFilter $filter optional filter to apply to the function + * @param float $weight function weight + * + * @return $this */ - public function addFunction($functionType, $functionParams, AbstractFilter $filter = NULL) + public function addFunction($functionType, $functionParams, AbstractFilter $filter = null, $weight = null) { $function = array( - $functionType => $functionParams + $functionType => $functionParams, ); if (!is_null($filter)) { $function['filter'] = $filter->toArray(); } + if ($weight !== null) { + $function['weight'] = $weight; + } + $this->_functions[] = $function; + return $this; } /** - * Add a script_score function to the query - * @param Script $script a Script object + * Add a script_score function to the query. + * + * @param Script $script a Script object * @param AbstractFilter $filter an optional filter to apply to the function - * @return \Elastica\Query\FunctionScore + * @param float $weight the weight of the function + * + * @return $this */ - public function addScriptScoreFunction(Script $script, AbstractFilter $filter = NULL) + public function addScriptScoreFunction(Script $script, AbstractFilter $filter = null, $weight = null) { - return $this->addFunction('script_score', $script->toArray(), $filter); + return $this->addFunction('script_score', $script->toArray(), $filter, $weight); } /** - * Add a decay function to the query - * @param string $function see DECAY_* constants for valid options - * @param string $field the document field on which to perform the decay function - * @param string $origin the origin value for this decay function - * @param string $scale a scale to define the rate of decay for this function - * @param string $offset If defined, this function will only be computed for documents with a distance from the origin greater than this value - * @param float $decay optionally defines how documents are scored at the distance given by the $scale parameter - * @param float $scaleWeight optional factor by which to multiply the score at the value provided by the $scale parameter - * @param AbstractFilter $filter a filter associated with this function - * @return \Elastica\Query\FunctionScore + * Add a decay function to the query. + * + * @param string $function see DECAY_* constants for valid options + * @param string $field the document field on which to perform the decay function + * @param string $origin the origin value for this decay function + * @param string $scale a scale to define the rate of decay for this function + * @param string $offset If defined, this function will only be computed for documents with a distance from the origin greater than this value + * @param float $decay optionally defines how documents are scored at the distance given by the $scale parameter + * @param float $scaleWeight optional factor by which to multiply the score at the value provided by the $scale parameter + * @param float $weight optional factor by which to multiply the score at the value provided by the $scale parameter + * @param AbstractFilter $filter a filter associated with this function + * + * @return $this */ - public function addDecayFunction($function, $field, $origin, $scale, $offset = NULL, $decay = NULL, $scaleWeight = NULL, - AbstractFilter $filter = NULL) - { + public function addDecayFunction( + $function, + $field, + $origin, + $scale, + $offset = null, + $decay = null, + $weight = null, + AbstractFilter $filter = null + ) { $functionParams = array( $field => array( 'origin' => $origin, - 'scale' => $scale - ) + 'scale' => $scale, + ), ); if (!is_null($offset)) { $functionParams[$field]['offset'] = $offset; } if (!is_null($decay)) { - $functionParams[$field]['decay'] = (float)$decay; - } - if (!is_null($scaleWeight)) { - $functionParams[$field]['scale_weight'] = (float)$scaleWeight; + $functionParams[$field]['decay'] = (float) $decay; } - return $this->addFunction($function, $functionParams, $filter); + + return $this->addFunction($function, $functionParams, $filter, $weight); } /** - * Add a boost_factor function to the query - * @param float $boostFactor the boost factor value + * Add a boost_factor function to the query. + * + * @param float $boostFactor the boost factor value + * @param AbstractFilter $filter a filter associated with this function + * + * @deprecated + */ + public function addBoostFactorFunction($boostFactor, AbstractFilter $filter = null) + { + $this->addWeightFunction($boostFactor, $filter); + } + + /** + * @param float $weight the weight of the function * @param AbstractFilter $filter a filter associated with this function */ - public function addBoostFactorFunction($boostFactor, AbstractFilter $filter = NULL) + public function addWeightFunction($weight, AbstractFilter $filter = null) { - $this->addFunction('boost_factor', $boostFactor, $filter); + $this->addFunction('weight', $weight, $filter); } /** - * Add a random_score function to the query - * @param number $seed the seed value + * Add a random_score function to the query. + * + * @param number $seed the seed value * @param AbstractFilter $filter a filter associated with this function - * @param float $boost an optional boost value associated with this function + * @param float $weight an optional boost value associated with this function */ - public function addRandomScoreFunction($seed, AbstractFilter $filter = NULL, $boost = NULL) + public function addRandomScoreFunction($seed, AbstractFilter $filter = null, $weight = null) { - $this->addFunction('random_score', array('seed' => $seed), $filter, $boost); + $this->addFunction('random_score', array('seed' => $seed), $filter, $weight); } /** - * Set an overall boost value for this query + * Set an overall boost value for this query. + * * @param float $boost - * @return \Elastica\Query\FunctionScore + * + * @return $this */ public function setBoost($boost) { - return $this->setParam('boost', (float)$boost); + return $this->setParam('boost', (float) $boost); } /** - * Restrict the combined boost of the function_score query and its child query + * Restrict the combined boost of the function_score query and its child query. + * * @param float $maxBoost - * @return \Elastica\Query\FunctionScore + * + * @return $this */ public function setMaxBoost($maxBoost) { - return $this->setParam('max_boost', (float)$maxBoost); + return $this->setParam('max_boost', (float) $maxBoost); } /** - * The boost mode determines how the score of this query is combined with that of the child query + * The boost mode determines how the score of this query is combined with that of the child query. + * * @param string $mode see BOOST_MODE_* constants for valid options. Default is multiply. - * @return \Elastica\Query\FunctionScore + * + * @return $this */ public function setBoostMode($mode) { @@ -166,22 +207,27 @@ class FunctionScore extends AbstractQuery /** * If set, this query will return results in random order. + * * @param int $seed Set a seed value to return results in the same random order for consistent pagination. - * @return \Elastica\Query\FunctionScore + * + * @return $this */ - public function setRandomScore($seed = NULL) + public function setRandomScore($seed = null) { $seedParam = new \stdClass(); if (!is_null($seed)) { $seedParam->seed = $seed; } + return $this->setParam('random_score', $seedParam); } /** - * Set the score method + * Set the score method. + * * @param string $mode see SCORE_MODE_* constants for valid options. Default is multiply. - * @return \Elastica\Query\FunctionScore + * + * @return $this */ public function setScoreMode($mode) { @@ -189,6 +235,18 @@ class FunctionScore extends AbstractQuery } /** + * Set min_score option. + * + * @param float $minScore + * + * @return $this + */ + public function setMinScore($minScore) + { + return $this->setParam('min_score', (float) $minScore); + } + + /** * @return array */ public function toArray() @@ -196,6 +254,7 @@ class FunctionScore extends AbstractQuery if (sizeof($this->_functions)) { $this->setParam('functions', $this->_functions); } + return parent::toArray(); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Fuzzy.php b/vendor/ruflin/elastica/lib/Elastica/Query/Fuzzy.php index 73b0f1a1..a3a46693 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Fuzzy.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Fuzzy.php @@ -1,27 +1,24 @@ <?php - namespace Elastica\Query; use Elastica\Exception\InvalidException; /** - * Fuzzy query + * Fuzzy query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html */ class Fuzzy extends AbstractQuery { /** - * Construct a fuzzy query + * Construct a fuzzy query. * - * @param string $fieldName Field name - * @param string $value String to search for - * @return \Elastica\Query\Fuzzy Current object + * @param string $fieldName Field name + * @param string $value String to search for */ - public function __construct ($fieldName = null, $value = null) + public function __construct($fieldName = null, $value = null) { if ($fieldName and $value) { $this->setField($fieldName, $value); @@ -29,13 +26,14 @@ class Fuzzy extends AbstractQuery } /** - * Set field for fuzzy query + * Set field for fuzzy query. * - * @param string $fieldName Field name - * @param string $value String to search for - * @return \Elastica\Query\Fuzzy Current object + * @param string $fieldName Field name + * @param string $value String to search for + * + * @return $this */ - public function setField ($fieldName, $value) + public function setField($fieldName, $value) { if (!is_string($value) or !is_string($fieldName)) { throw new InvalidException('The field and value arguments must be of type string.'); @@ -43,30 +41,34 @@ class Fuzzy extends AbstractQuery if (count($this->getParams()) > 0 and array_shift(array_keys($this->getParams())) != $fieldName) { throw new InvalidException('Fuzzy query can only support a single field.'); } + return $this->setParam($fieldName, array('value' => $value)); } /** - * Set optional parameters on the existing query + * Set optional parameters on the existing query. * - * @param string $param option name - * @param mixed $value Value of the parameter - * @return \Elastica\Query\Fuzzy Current object + * @param string $param option name + * @param mixed $value Value of the parameter + * + * @return $this */ - public function setFieldOption ($param, $value) { + public function setFieldOption($param, $value) + { //Retrieve the single existing field for alteration. $params = $this->getParams(); if (count($params) < 1) { - throw new InvalidException('No field has been set'); + throw new InvalidException('No field has been set'); } $keyArray = array_keys($params); $params[$keyArray[0]][$param] = $value; - return $this->setparam($keyArray[0], $params[$keyArray[0]]); + return $this->setParam($keyArray[0], $params[$keyArray[0]]); } /** * Deprecated method of setting a field. + * * @deprecated */ public function addField($fieldName, $args) @@ -79,6 +81,7 @@ class Fuzzy extends AbstractQuery foreach ($args as $param => $value) { $this->setFieldOption($param, $value); } + return $this; } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php b/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php index ffa34a81..2de480a8 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php @@ -1,79 +1,77 @@ <?php - namespace Elastica\Query; /** - * Fuzzy Like This query + * Fuzzy Like This query. * - * @category Xodoa - * @package Elastica * @author Raul Martinez, Jr <juneym@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/flt-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-flt-query.html */ class FuzzyLikeThis extends AbstractQuery { /** - * Field names + * Field names. * * @var array Field names */ protected $_fields = array(); /** - * Like text + * Like text. * * @var string Like text */ - protected $_likeText = ''; + protected $_likeText = ''; /** - * Ignore term frequency + * Ignore term frequency. * - * @var boolean ignore term frequency + * @var bool ignore term frequency */ protected $_ignoreTF = false; /** - * Max query terms value + * Max query terms value. * * @var int Max query terms value */ protected $_maxQueryTerms = 25; /** - * minimum similarity + * minimum similarity. * * @var int minimum similarity */ protected $_minSimilarity = 0.5; /** - * Prefix Length + * Prefix Length. * * @var int Prefix Length */ protected $_prefixLength = 0; /** - * Boost + * Boost. * * @var float Boost */ protected $_boost = 1.0; /** - * Analyzer + * Analyzer. * * @var sting Analyzer */ protected $_analyzer; - /** - * Adds field to flt query + * Adds field to flt query. + * + * @param array $fields Field names * - * @param array $fields Field names - * @return \Elastica\Query\FuzzyLikeThis Current object + * @return $this */ public function addFields(array $fields) { @@ -83,10 +81,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set the "like_text" value + * Set the "like_text" value. * - * @param string $text - * @return \Elastica\Query\FuzzyLikeThis This current object + * @param string $text + * + * @return $this */ public function setLikeText($text) { @@ -97,10 +96,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set the "ignore_tf" value (ignore term frequency) + * Set the "ignore_tf" value (ignore term frequency). + * + * @param bool $ignoreTF * - * @param bool $ignoreTF - * @return \Elastica\Query\FuzzyLikeThis Current object + * @return $this */ public function setIgnoreTF($ignoreTF) { @@ -110,10 +110,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set the minimum similarity + * Set the minimum similarity. * - * @param int $value - * @return \Elastica\Query\FuzzyLikeThis This current object + * @param int $value + * + * @return $this */ public function setMinSimilarity($value) { @@ -124,10 +125,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set boost + * Set boost. + * + * @param float $value Boost value * - * @param float $value Boost value - * @return \Elastica\Query\FuzzyLikeThis Query object + * @return $this */ public function setBoost($value) { @@ -137,10 +139,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set Prefix Length + * Set Prefix Length. * - * @param int $value Prefix length - * @return \Elastica\Query\FuzzyLikeThis + * @param int $value Prefix length + * + * @return $this */ public function setPrefixLength($value) { @@ -150,10 +153,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set max_query_terms + * Set max_query_terms. + * + * @param int $value Max query terms value * - * @param int $value Max query terms value - * @return \Elastica\Query\FuzzyLikeThis + * @return $this */ public function setMaxQueryTerms($value) { @@ -163,10 +167,11 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Set analyzer + * Set analyzer. * - * @param string $text Analyzer text - * @return \Elastica\Query\FuzzyLikeThis + * @param string $text Analyzer text + * + * @return $this */ public function setAnalyzer($text) { @@ -177,9 +182,10 @@ class FuzzyLikeThis extends AbstractQuery } /** - * Converts fuzzy like this query to array + * Converts fuzzy like this query to array. * * @return array Query array + * * @see \Elastica\Query\AbstractQuery::toArray() */ public function toArray() @@ -192,18 +198,14 @@ class FuzzyLikeThis extends AbstractQuery $args['boost'] = $this->_boost; } - if (!empty($this->_likeText)) { - $args['like_text'] = $this->_likeText; - } - if (!empty($this->_analyzer)) { $args['analyzer'] = $this->_analyzer; } - $args['min_similarity'] = ($this->_minSimilarity > 0) ? $this->_minSimilarity : 0; - $args['prefix_length'] = $this->_prefixLength; + $args['like_text'] = $this->_likeText; + $args['prefix_length'] = $this->_prefixLength; $args['ignore_tf'] = $this->_ignoreTF; $args['max_query_terms'] = $this->_maxQueryTerms; diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/HasChild.php b/vendor/ruflin/elastica/lib/Elastica/Query/HasChild.php index e849a9bf..190fa592 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/HasChild.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/HasChild.php @@ -1,23 +1,22 @@ <?php - namespace Elastica\Query; + use Elastica\Query as BaseQuery; /** - * Returns parent documents having child docs matching the query + * Returns parent documents having child docs matching the query. * - * @category Xodoa - * @package Elastica * @author Fabian Vogler <fabian@equivalence.ch> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/has-child-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-query.html */ class HasChild extends AbstractQuery { /** - * Construct HasChild Query + * Construct HasChild Query. * * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @param string $type Parent document type + * @param string $type Parent document type */ public function __construct($query, $type = null) { @@ -26,10 +25,11 @@ class HasChild extends AbstractQuery } /** - * Sets query object + * Sets query object. * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Query\HasChild + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery($query) { @@ -40,10 +40,11 @@ class HasChild extends AbstractQuery } /** - * Set type of the parent document + * Set type of the parent document. + * + * @param string $type Parent document type * - * @param string $type Parent document type - * @return \Elastica\Query\HasChild Current object + * @return $this */ public function setType($type) { @@ -51,10 +52,11 @@ class HasChild extends AbstractQuery } /** - * Sets the scope + * Sets the scope. + * + * @param string $scope Scope * - * @param string $scope Scope - * @return \Elastica\Query\HasChild Current object + * @return $this */ public function setScope($scope) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/HasParent.php b/vendor/ruflin/elastica/lib/Elastica/Query/HasParent.php index 809fb18d..03aae13b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/HasParent.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/HasParent.php @@ -1,22 +1,20 @@ <?php - namespace Elastica\Query; + use Elastica\Query as BaseQuery; /** - * Returns child documents having parent docs matching the query + * Returns child documents having parent docs matching the query. * - * @category Xodoa - * @package Elastica - * @link http://www.elasticsearch.org/guide/reference/query-dsl/has-parent-query.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-query.html */ class HasParent extends AbstractQuery { /** - * Construct HasChild Query + * Construct HasChild Query. * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @param string $type Parent document type + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query + * @param string $type Parent document type */ public function __construct($query, $type) { @@ -25,10 +23,11 @@ class HasParent extends AbstractQuery } /** - * Sets query object + * Sets query object. + * + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Filter\HasParent + * @return $this */ public function setQuery($query) { @@ -39,10 +38,11 @@ class HasParent extends AbstractQuery } /** - * Set type of the parent document + * Set type of the parent document. * - * @param string $type Parent document type - * @return \Elastica\Filter\HasParent Current object + * @param string $type Parent document type + * + * @return $this */ public function setType($type) { @@ -50,10 +50,11 @@ class HasParent extends AbstractQuery } /** - * Sets the scope + * Sets the scope. + * + * @param string $scope Scope * - * @param string $scope Scope - * @return \Elastica\Filter\HasParent Current object + * @return $this */ public function setScope($scope) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Ids.php b/vendor/ruflin/elastica/lib/Elastica/Query/Ids.php index f4a6f1aa..5d76efcf 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Ids.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Ids.php @@ -1,32 +1,31 @@ <?php - namespace Elastica\Query; + use Elastica\Type; /** - * Ids Query + * Ids Query. * - * @category Xodoa - * @package Elastica * @author Lee Parker * @author Nicolas Ruflin <spam@ruflin.com> * @author Tim Rupp - * @link http://www.elasticsearch.org/guide/reference/query-dsl/ids-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html */ class Ids extends AbstractQuery { /** - * Params + * Params. * * @var array Params */ protected $_params = array(); /** - * Creates filter object + * Creates filter object. * * @param string|\Elastica\Type $type Type to filter on - * @param array $ids List of ids + * @param array $ids List of ids */ public function __construct($type = null, array $ids = array()) { @@ -35,10 +34,11 @@ class Ids extends AbstractQuery } /** - * Adds one more filter to the and filter + * Adds one more filter to the and filter. + * + * @param string $id Adds id to filter * - * @param string $id Adds id to filter - * @return \Elastica\Query\Ids Current object + * @return $this */ public function addId($id) { @@ -48,10 +48,11 @@ class Ids extends AbstractQuery } /** - * Adds one more type to query + * Adds one more type to query. * - * @param string|\Elastica\Type $type Type name or object - * @return \Elastica\Query\Ids Current object + * @param string|\Elastica\Type $type Type name or object + * + * @return $this */ public function addType($type) { @@ -68,10 +69,11 @@ class Ids extends AbstractQuery } /** - * Set type + * Set type. + * + * @param string|\Elastica\Type $type Type name or object * - * @param string|\Elastica\Type $type Type name or object - * @return \Elastica\Query\Ids Current object + * @return $this */ public function setType($type) { @@ -88,10 +90,11 @@ class Ids extends AbstractQuery } /** - * Sets the ids to filter + * Sets the ids to filter. * - * @param array|string $ids List of ids - * @return \Elastica\Query\Ids Current object + * @param array|string $ids List of ids + * + * @return $this */ public function setIds($ids) { @@ -105,9 +108,10 @@ class Ids extends AbstractQuery } /** - * Converts filter to array + * Converts filter to array. * * @see \Elastica\Query\AbstractQuery::toArray() + * * @return array Query array */ public function toArray() diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Image.php b/vendor/ruflin/elastica/lib/Elastica/Query/Image.php new file mode 100644 index 00000000..bf7d028b --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Image.php @@ -0,0 +1,187 @@ +<?php +namespace Elastica\Query; + +/** + * Image query. + * + * @author Jacques Moati <jacques@moati.net> + * + * @link https://github.com/kzwang/elasticsearch-image + * + * To use this feature you have to call the following command in the + * elasticsearch directory: + * <code> + * ./bin/plugin --url https://github.com/SibaTokyo/elasticsearch-image/releases/download/1.4.0/elasticsearch-image-1.4.0.zip --install image + * </code> + * This installs the image plugin. More infos + * can be found here: {@link https://github.com/SibaTokyo/elasticsearch-image} + */ +class Image extends AbstractQuery +{ + public function __construct(array $image = array()) + { + $this->setParams($image); + } + + /** + * Sets a param for the given field. + * + * @param string $field + * @param string $key + * @param string $value + * + * @return $this + */ + public function setFieldParam($field, $key, $value) + { + if (!isset($this->_params[$field])) { + $this->_params[$field] = array(); + } + + $this->_params[$field][$key] = $value; + + return $this; + } + + /** + * Set field boost value. + * + * If not set, defaults to 1.0. + * + * @param string $field + * @param float $boost + * + * @return $this + */ + public function setFieldBoost($field, $boost = 1.0) + { + return $this->setFieldParam($field, 'boost', (float) $boost); + } + + /** + * Set field feature value. + * + * If not set, defaults CEDD. + * + * @param string $field + * @param string $feature + * + * @return $this + */ + public function setFieldFeature($field, $feature = 'CEDD') + { + return $this->setFieldParam($field, 'feature', $feature); + } + + /** + * Set field hash value. + * + * If not set, defaults BIT_SAMPLING. + * + * @param string $field + * @param string $hash + * + * @return $this + */ + public function setFieldHash($field, $hash = 'BIT_SAMPLING') + { + return $this->setFieldParam($field, 'hash', $hash); + } + + /** + * Set field image value. + * + * @param string $field + * @param string $path File will be base64_encode + * + * @throws \Exception + * + * @return $this + */ + public function setFieldImage($field, $path) + { + if (!file_exists($path) || !is_readable($path)) { + throw new \Exception(sprintf("File %s can't be open", $path)); + } + + return $this->setFieldParam($field, 'image', base64_encode(file_get_contents($path))); + } + + /** + * Set field index value. + * + * @param string $field + * @param string $index + * + * @return $this + */ + public function setFieldIndex($field, $index) + { + return $this->setFieldParam($field, 'index', $index); + } + + /** + * Set field type value. + * + * @param string $field + * @param string $type + * + * @return $this + */ + public function setFieldType($field, $type) + { + return $this->setFieldParam($field, 'type', $type); + } + + /** + * Set field id value. + * + * @param string $field + * @param string $id + * + * @return $this + */ + public function setFieldId($field, $id) + { + return $this->setFieldParam($field, 'id', $id); + } + + /** + * Set field path value. + * + * @param string $field + * @param string $path + * + * @return $this + */ + public function setFieldPath($field, $path) + { + return $this->setFieldParam($field, 'path', $path); + } + + /** + * Define quickly a reference image already in your elasticsearch database. + * + * If not set, path will be the same as $field. + * + * @param string $field + * @param string $index + * @param string $type + * @param string $id + * @param string $path + * + * @return $this + */ + public function setImageByReference($field, $index, $type, $id, $path = null) + { + if (null === $path) { + $path = $field; + } + + $this->setFieldIndex($field, $index); + $this->setFieldType($field, $type); + $this->setFieldId($field, $id); + + return $this->setFieldPath($field, $path); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Match.php b/vendor/ruflin/elastica/lib/Elastica/Query/Match.php index ba66ad63..abb40970 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Match.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Match.php @@ -1,27 +1,37 @@ <?php - namespace Elastica\Query; /** - * Match query + * Match query. * - * @category Xodoa - * @package Elastica * @author F21 * @author WONG Wing Lun <luiges90@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/match-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html */ class Match extends AbstractQuery { - const ZERO_TERM_NONE = 'none'; - const ZERO_TERM_ALL = 'all'; + const ZERO_TERM_NONE = 'none'; + const ZERO_TERM_ALL = 'all'; + + /** + * @param string $field + * @param mixed $values + */ + public function __construct($field = null, $values = null) + { + if ($field !== null && $values !== null) { + $this->setParam($field, $values); + } + } /** - * Sets a param for the message array + * Sets a param for the message array. + * + * @param string $field + * @param mixed $values * - * @param string $field - * @param mixed $values - * @return \Elastica\Query\Match + * @return $this */ public function setField($field, $values) { @@ -29,12 +39,13 @@ class Match extends AbstractQuery } /** - * Sets a param for the given field + * Sets a param for the given field. * - * @param string $field - * @param string $key - * @param string $value - * @return \Elastica\Query\Match + * @param string $field + * @param string $key + * @param string $value + * + * @return $this */ public function setFieldParam($field, $key, $value) { @@ -48,11 +59,12 @@ class Match extends AbstractQuery } /** - * Sets the query string + * Sets the query string. + * + * @param string $field + * @param string $query * - * @param string $field - * @param string $query - * @return \Elastica\Query\Match + * @return $this */ public function setFieldQuery($field, $query) { @@ -60,11 +72,12 @@ class Match extends AbstractQuery } /** - * Set field type + * Set field type. + * + * @param string $field + * @param string $type * - * @param string $field - * @param string $type - * @return \Elastica\Query\Match + * @return $this */ public function setFieldType($field, $type) { @@ -72,11 +85,12 @@ class Match extends AbstractQuery } /** - * Set field operator + * Set field operator. * - * @param string $field - * @param string $operator - * @return \Elastica\Query\Match + * @param string $field + * @param string $operator + * + * @return $this */ public function setFieldOperator($field, $operator) { @@ -84,11 +98,12 @@ class Match extends AbstractQuery } /** - * Set field analyzer + * Set field analyzer. + * + * @param string $field + * @param string $analyzer * - * @param string $field - * @param string $analyzer - * @return \Elastica\Query\Match + * @return $this */ public function setFieldAnalyzer($field, $analyzer) { @@ -96,13 +111,14 @@ class Match extends AbstractQuery } /** - * Set field boost value + * Set field boost value. * * If not set, defaults to 1.0. * - * @param string $field - * @param float $boost - * @return \Elastica\Query\Match + * @param string $field + * @param float $boost + * + * @return $this */ public function setFieldBoost($field, $boost = 1.0) { @@ -110,12 +126,14 @@ class Match extends AbstractQuery } /** - * Set field minimum should match + * Set field minimum should match. * - * @param string $field - * @param int|string $minimumShouldMatch - * @return \Elastica\Query\Match - * @link Possible values for minimum_should_match http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html + * @param string $field + * @param int|string $minimumShouldMatch + * + * @return $this + * + * @link Possible values for minimum_should_match http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html */ public function setFieldMinimumShouldMatch($field, $minimumShouldMatch) { @@ -123,11 +141,12 @@ class Match extends AbstractQuery } /** - * Set field fuzziness + * Set field fuzziness. + * + * @param string $field + * @param mixed $fuzziness * - * @param string $field - * @param mixed $fuzziness - * @return \Elastica\Query\Match + * @return $this */ public function setFieldFuzziness($field, $fuzziness) { @@ -135,11 +154,12 @@ class Match extends AbstractQuery } /** - * Set field fuzzy rewrite + * Set field fuzzy rewrite. * - * @param string $field - * @param string $fuzzyRewrite - * @return \Elastica\Query\Match + * @param string $field + * @param string $fuzzyRewrite + * + * @return $this */ public function setFieldFuzzyRewrite($field, $fuzzyRewrite) { @@ -147,11 +167,12 @@ class Match extends AbstractQuery } /** - * Set field prefix length + * Set field prefix length. + * + * @param string $field + * @param int $prefixLength * - * @param string $field - * @param int $prefixLength - * @return \Elastica\Query\Match + * @return $this */ public function setFieldPrefixLength($field, $prefixLength) { @@ -159,11 +180,12 @@ class Match extends AbstractQuery } /** - * Set field max expansions + * Set field max expansions. + * + * @param string $field + * @param int $maxExpansions * - * @param string $field - * @param int $maxExpansions - * @return \Elastica\Query\Match + * @return $this */ public function setFieldMaxExpansions($field, $maxExpansions) { @@ -171,13 +193,14 @@ class Match extends AbstractQuery } /** - * Set zero terms query + * Set zero terms query. * * If not set, default to 'none' * - * @param string $field - * @param string $zeroTermQuery - * @return \Elastica\Query\Match + * @param string $field + * @param string $zeroTermQuery + * + * @return $this */ public function setFieldZeroTermsQuery($field, $zeroTermQuery = 'none') { @@ -185,11 +208,12 @@ class Match extends AbstractQuery } /** - * Set cutoff frequency + * Set cutoff frequency. + * + * @param string $field + * @param float $cutoffFrequency * - * @param string $field - * @param float $cutoffFrequency - * @return \Elastica\Query\Match + * @return $this */ public function setFieldCutoffFrequency($field, $cutoffFrequency) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/MatchAll.php b/vendor/ruflin/elastica/lib/Elastica/Query/MatchAll.php index 23b4fdfc..d01aaee8 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/MatchAll.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/MatchAll.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Query; /** - * Match all query. Returns all results + * Match all query. Returns all results. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/match-all-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html */ class MatchAll extends AbstractQuery { /** - * Creates match all query + * Creates match all query. */ public function __construct() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrase.php b/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrase.php new file mode 100644 index 00000000..54302f90 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrase.php @@ -0,0 +1,13 @@ +<?php +namespace Elastica\Query; + +/** + * Match Phrase query. + * + * @author Jacques Moati <jacques@moati.net> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html#_phrase + */ +class MatchPhrase extends Match +{ +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrasePrefix.php b/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrasePrefix.php new file mode 100644 index 00000000..61764bda --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/MatchPhrasePrefix.php @@ -0,0 +1,13 @@ +<?php +namespace Elastica\Query; + +/** + * Match Phrase Prefix query. + * + * @author Jacques Moati <jacques@moati.net> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html#_match_phrase_prefix + */ +class MatchPhrasePrefix extends Match +{ +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/MoreLikeThis.php b/vendor/ruflin/elastica/lib/Elastica/Query/MoreLikeThis.php index d9ae4284..cd375db5 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/MoreLikeThis.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/MoreLikeThis.php @@ -1,21 +1,20 @@ <?php - namespace Elastica\Query; /** - * More Like This query + * More Like This query. * - * @category Xodoa - * @package Elastica * @author Raul Martinez, Jr <juneym@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/mlt-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html */ class MoreLikeThis extends AbstractQuery { /** - * Adds field to mlt query + * Set fields to which to restrict the mlt query. + * + * @param array $fields Field names * - * @param array $fields Field names * @return \Elastica\Query\MoreLikeThis Current object */ public function setFields(array $fields) @@ -24,10 +23,23 @@ class MoreLikeThis extends AbstractQuery } /** - * Set the "like_text" value + * Set document ids for the mlt query. + * + * @param array $ids Document ids + * + * @return \Elastica\Query\MoreLikeThis Current object + */ + public function setIds(array $ids) + { + return $this->setParam('ids', $ids); + } + + /** + * Set the "like_text" value. + * + * @param string $likeText * - * @param string $likeText - * @return \Elastica\Query\MoreLikeThis This current object + * @return $this */ public function setLikeText($likeText) { @@ -37,10 +49,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set boost + * Set boost. * - * @param float $boost Boost value - * @return \Elastica\Query\MoreLikeThis Query object + * @param float $boost Boost value + * + * @return $this */ public function setBoost($boost) { @@ -48,10 +61,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set max_query_terms + * Set max_query_terms. + * + * @param int $maxQueryTerms Max query terms value * - * @param int $maxQueryTerms Max query terms value - * @return \Elastica\Query\MoreLikeThis + * @return $this */ public function setMaxQueryTerms($maxQueryTerms) { @@ -59,10 +73,13 @@ class MoreLikeThis extends AbstractQuery } /** - * Set percent terms to match + * Set percent terms to match. + * + * @param float $percentTermsToMatch Percentage + * + * @return $this * - * @param float $percentTermsToMatch Percentage - * @return \Elastica\Query\MoreLikeThis + * @deprecated Option "percent_terms_to_match" deprecated as of ES 1.5. Use "minimum_should_match" instead. */ public function setPercentTermsToMatch($percentTermsToMatch) { @@ -70,10 +87,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set min term frequency + * Set min term frequency. * - * @param int $minTermFreq - * @return \Elastica\Query\MoreLikeThis + * @param int $minTermFreq + * + * @return $this */ public function setMinTermFrequency($minTermFreq) { @@ -81,10 +99,11 @@ class MoreLikeThis extends AbstractQuery } /** - * set min document frequency + * set min document frequency. + * + * @param int $minDocFreq * - * @param int $minDocFreq - * @return \Elastica\Query\MoreLikeThis + * @return $this */ public function setMinDocFrequency($minDocFreq) { @@ -92,10 +111,11 @@ class MoreLikeThis extends AbstractQuery } /** - * set max document frequency + * set max document frequency. * - * @param int $maxDocFreq - * @return \Elastica\Query\MoreLikeThis + * @param int $maxDocFreq + * + * @return $this */ public function setMaxDocFrequency($maxDocFreq) { @@ -103,10 +123,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set min word length + * Set min word length. + * + * @param int $minWordLength * - * @param int $minWordLength - * @return \Elastica\Query\MoreLikeThis + * @return $this */ public function setMinWordLength($minWordLength) { @@ -114,10 +135,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set max word length + * Set max word length. * - * @param int $maxWordLength - * @return \Elastica\Query\MoreLikeThis + * @param int $maxWordLength + * + * @return $this */ public function setMaxWordLength($maxWordLength) { @@ -125,11 +147,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set boost terms + * Set boost terms. + * + * @param bool $boostTerms * - * @param bool $boostTerms - * @return \Elastica\Query\MoreLikeThis - * @link http://www.elasticsearch.org/guide/reference/query-dsl/mlt-query.html + * @return $this */ public function setBoostTerms($boostTerms) { @@ -137,10 +159,11 @@ class MoreLikeThis extends AbstractQuery } /** - * Set analyzer + * Set analyzer. * - * @param string $analyzer - * @return \Elastica\Query\MoreLikeThis + * @param string $analyzer + * + * @return $this */ public function setAnalyzer($analyzer) { @@ -150,13 +173,26 @@ class MoreLikeThis extends AbstractQuery } /** - * Set stop words + * Set stop words. + * + * @param array $stopWords * - * @param array $stopWords - * @return \Elastica\Query\MoreLikeThis + * @return $this */ public function setStopWords(array $stopWords) { return $this->setParam('stop_words', $stopWords); } + + /** + * Set minimum_should_match option. + * + * @param int|string $minimumShouldMatch + * + * @return $this + */ + public function setMinimumShouldMatch($minimumShouldMatch) + { + return $this->setParam('minimum_should_match', $minimumShouldMatch); + } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/MultiMatch.php b/vendor/ruflin/elastica/lib/Elastica/Query/MultiMatch.php index ac2d01b3..0771f370 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/MultiMatch.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/MultiMatch.php @@ -1,36 +1,35 @@ <?php - namespace Elastica\Query; /** - * Multi Match + * Multi Match. * - * @category Xodoa - * @package Elastica * @author Rodolfo Adhenawer Campagnoli Moraes <adhenawer@gmail.com> * @author Wong Wing Lun <luiges90@gmail.com> * @author Tristan Maindron <tmaindron@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/multi-match-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html */ class MultiMatch extends AbstractQuery { - const TYPE_BEST_FIELDS = 'best_fields'; - const TYPE_MOST_FIELDS = 'most_fields'; - const TYPE_CROSS_FIELDS = 'cross_fields'; - const TYPE_PHRASE = 'phrase'; + const TYPE_BEST_FIELDS = 'best_fields'; + const TYPE_MOST_FIELDS = 'most_fields'; + const TYPE_CROSS_FIELDS = 'cross_fields'; + const TYPE_PHRASE = 'phrase'; const TYPE_PHRASE_PREFIX = 'phrase_prefix'; - const OPERATOR_OR = 'or'; - const OPERATOR_AND = 'and'; + const OPERATOR_OR = 'or'; + const OPERATOR_AND = 'and'; - const ZERO_TERM_NONE = 'none'; - const ZERO_TERM_ALL = 'all'; + const ZERO_TERM_NONE = 'none'; + const ZERO_TERM_ALL = 'all'; /** - * Sets the query + * Sets the query. * - * @param string $query Query - * @return \Elastica\Query\MultiMatch Current object + * @param string $query Query + * + * @return $this */ public function setQuery($query = '') { @@ -40,8 +39,9 @@ class MultiMatch extends AbstractQuery /** * Sets Fields to be used in the query. * - * @param array $fields Fields - * @return \Elastica\Query\MultiMatch Current object + * @param array $fields Fields + * + * @return $this */ public function setFields($fields = array()) { @@ -53,8 +53,9 @@ class MultiMatch extends AbstractQuery * * If not set, defaults to true. * - * @param boolean $useDisMax - * @return \Elastica\Query\MultiMatch Current object + * @param bool $useDisMax + * + * @return $this */ public function setUseDisMax($useDisMax = true) { @@ -66,8 +67,9 @@ class MultiMatch extends AbstractQuery * * If not set, defaults to 0.0. * - * @param float $tieBreaker - * @return \Elastica\Query\MultiMatch Current object + * @param float $tieBreaker + * + * @return $this */ public function setTieBreaker($tieBreaker = 0.0) { @@ -75,12 +77,13 @@ class MultiMatch extends AbstractQuery } /** - * Sets operator for Match Query + * Sets operator for Match Query. * * If not set, defaults to 'or' * - * @param string $operator - * @return \Elastica\Query\MultiMatch Current object + * @param string $operator + * + * @return $this */ public function setOperator($operator = 'or') { @@ -88,23 +91,25 @@ class MultiMatch extends AbstractQuery } /** - * Set field minimum should match for Match Query + * Set field minimum should match for Match Query. + * + * @param mixed $minimumShouldMatch * - * @param int $minimumShouldMatch - * @return \Elastica\Query\Match + * @return $this */ public function setMinimumShouldMatch($minimumShouldMatch) { - return $this->setParam('minimum_should_match', (int) $minimumShouldMatch); + return $this->setParam('minimum_should_match', $minimumShouldMatch); } /** - * Set zero terms query for Match Query + * Set zero terms query for Match Query. * * If not set, default to 'none' * - * @param string $zeroTermQuery - * @return \Elastica\Query\Match + * @param string $zeroTermQuery + * + * @return $this */ public function setZeroTermsQuery($zeroTermQuery = 'none') { @@ -112,10 +117,11 @@ class MultiMatch extends AbstractQuery } /** - * Set cutoff frequency for Match Query + * Set cutoff frequency for Match Query. + * + * @param float $cutoffFrequency * - * @param float $cutoffFrequency - * @return \Elastica\Query\Match + * @return $this */ public function setCutoffFrequency($cutoffFrequency) { @@ -123,11 +129,12 @@ class MultiMatch extends AbstractQuery } /** - * Set type + * Set type. * - * @param string $field - * @param string $type - * @return \Elastica\Query\Match + * @param string $field + * @param string $type + * + * @return $this */ public function setType($type) { @@ -135,10 +142,11 @@ class MultiMatch extends AbstractQuery } /** - * Set fuzziness + * Set fuzziness. + * + * @param float $fuzziness * - * @param float $fuzziness - * @return \Elastica\Query\Match + * @return $this */ public function setFuzziness($fuzziness) { @@ -146,10 +154,11 @@ class MultiMatch extends AbstractQuery } /** - * Set prefix length + * Set prefix length. * - * @param int $prefixLength - * @return \Elastica\Query\Match + * @param int $prefixLength + * + * @return $this */ public function setPrefixLength($prefixLength) { @@ -157,10 +166,11 @@ class MultiMatch extends AbstractQuery } /** - * Set max expansions + * Set max expansions. + * + * @param int $maxExpansions * - * @param int $maxExpansions - * @return \Elastica\Query\Match + * @return $this */ public function setMaxExpansions($maxExpansions) { @@ -168,10 +178,11 @@ class MultiMatch extends AbstractQuery } /** - * Set analyzer + * Set analyzer. + * + * @param string $analyzer * - * @param string $analyzer - * @return \Elastica\Query\Match + * @return $this */ public function setAnalyzer($analyzer) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Nested.php b/vendor/ruflin/elastica/lib/Elastica/Query/Nested.php index 3d2f2f64..b072cfc8 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Nested.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Nested.php @@ -1,22 +1,21 @@ <?php - namespace Elastica\Query; /** - * Nested query + * Nested query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/nested-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html */ class Nested extends AbstractQuery { /** - * Adds field to mlt query + * Adds field to mlt query. + * + * @param string $path Nested object path * - * @param string $path Nested object path - * @return \Elastica\Query\Nested + * @return $this */ public function setPath($path) { @@ -24,10 +23,11 @@ class Nested extends AbstractQuery } /** - * Sets nested query + * Sets nested query. * - * @param \Elastica\Query\AbstractQuery $query - * @return \Elastica\Query\Nested + * @param \Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery(AbstractQuery $query) { @@ -35,10 +35,11 @@ class Nested extends AbstractQuery } /** - * Set score method + * Set score method. + * + * @param string $scoreMode Options: avg, total, max and none. * - * @param string $scoreMode Options: avg, total, max and none. - * @return \Elastica\Query\Nested + * @return $this */ public function setScoreMode($scoreMode) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Prefix.php b/vendor/ruflin/elastica/lib/Elastica/Query/Prefix.php index 4306fd9c..c2b903ea 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Prefix.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Prefix.php @@ -1,18 +1,15 @@ <?php - namespace Elastica\Query; /** - * Prefix query + * Prefix query. * - * @category Xodoa - * @package Elastica - * @link http://www.elasticsearch.org/guide/reference/query-dsl/prefix-query.html + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html */ class Prefix extends AbstractQuery { /** - * Constructs the Prefix query object + * Constructs the Prefix query object. * * @param array $prefix OPTIONAL Calls setRawPrefix with the given $prefix array */ @@ -25,8 +22,9 @@ class Prefix extends AbstractQuery * setRawPrefix can be used instead of setPrefix if some more special * values for a prefix have to be set. * - * @param array $prefix Prefix array - * @return \Elastica\Query\Prefix Current object + * @param array $prefix Prefix array + * + * @return $this */ public function setRawPrefix(array $prefix) { @@ -34,12 +32,13 @@ class Prefix extends AbstractQuery } /** - * Adds a prefix to the prefix query + * Adds a prefix to the prefix query. + * + * @param string $key Key to query + * @param string|array $value Values(s) for the query. Boost can be set with array + * @param float $boost OPTIONAL Boost value (default = 1.0) * - * @param string $key Key to query - * @param string|array $value Values(s) for the query. Boost can be set with array - * @param float $boost OPTIONAL Boost value (default = 1.0) - * @return \Elastica\Query\Prefix Current object + * @return $this */ public function setPrefix($key, $value, $boost = 1.0) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/QueryString.php b/vendor/ruflin/elastica/lib/Elastica/Query/QueryString.php index 7d0b0094..89ea77cd 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/QueryString.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/QueryString.php @@ -1,27 +1,26 @@ <?php - namespace Elastica\Query; + use Elastica\Exception\InvalidException; /** - * QueryString query + * QueryString query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com>, Jasper van Wanrooy <jasper@vanwanrooy.net> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html */ class QueryString extends AbstractQuery { /** - * Query string + * Query string. * * @var string Query string */ protected $_queryString = ''; /** - * Creates query string object. Calls setQuery with argument + * Creates query string object. Calls setQuery with argument. * * @param string $queryString OPTIONAL Query string for object */ @@ -31,11 +30,13 @@ class QueryString extends AbstractQuery } /** - * Sets a new query string for the object + * Sets a new query string for the object. + * + * @param string $query Query string + * + * @throws \Elastica\Exception\InvalidException If given parameter is not a string * - * @param string $query Query string - * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Query\QueryString Current object + * @return $this */ public function setQuery($query = '') { @@ -47,12 +48,13 @@ class QueryString extends AbstractQuery } /** - * Sets the default field + * Sets the default field. * * If no field is set, _all is chosen * - * @param string $field Field - * @return \Elastica\Query\QueryString Current object + * @param string $field Field + * + * @return $this */ public function setDefaultField($field) { @@ -60,12 +62,13 @@ class QueryString extends AbstractQuery } /** - * Sets the default operator AND or OR + * Sets the default operator AND or OR. * * If no operator is set, OR is chosen * - * @param string $operator Operator - * @return \Elastica\Query\QueryString Current object + * @param string $operator Operator + * + * @return $this */ public function setDefaultOperator($operator) { @@ -75,8 +78,9 @@ class QueryString extends AbstractQuery /** * Sets the analyzer to analyze the query with. * - * @param string $analyzer Analyser to use - * @return \Elastica\Query\QueryString Current object + * @param string $analyzer Analyser to use + * + * @return $this */ public function setAnalyzer($analyzer) { @@ -88,8 +92,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to true. * - * @param bool $allow - * @return \Elastica\Query\QueryString Current object + * @param bool $allow + * + * @return $this */ public function setAllowLeadingWildcard($allow = true) { @@ -97,25 +102,13 @@ class QueryString extends AbstractQuery } /** - * Sets the parameter to auto-lowercase terms of some queries. - * - * If not set, defaults to true. - * - * @param bool $lowercase - * @return \Elastica\Query\QueryString Current object - */ - public function setLowercaseExpandedTerms($lowercase = true) - { - return $this->setParam('lowercase_expanded_terms', (bool) $lowercase); - } - - /** * Sets the parameter to enable the position increments in result queries. * * If not set, defaults to true. * - * @param bool $enabled - * @return \Elastica\Query\QueryString Current object + * @param bool $enabled + * + * @return $this */ public function setEnablePositionIncrements($enabled = true) { @@ -127,8 +120,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to 0. * - * @param int $length - * @return \Elastica\Query\QueryString Current object + * @param int $length + * + * @return $this */ public function setFuzzyPrefixLength($length = 0) { @@ -140,8 +134,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to 0.5 * - * @param float $minSim - * @return \Elastica\Query\QueryString Current object + * @param float $minSim + * + * @return $this */ public function setFuzzyMinSim($minSim = 0.5) { @@ -154,8 +149,9 @@ class QueryString extends AbstractQuery * If zero, exact phrases are required. * If not set, defaults to zero. * - * @param int $phraseSlop - * @return \Elastica\Query\QueryString Current object + * @param int $phraseSlop + * + * @return $this */ public function setPhraseSlop($phraseSlop = 0) { @@ -167,8 +163,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to 1.0. * - * @param float $boost - * @return \Elastica\Query\QueryString Current object + * @param float $boost + * + * @return $this */ public function setBoost($boost = 1.0) { @@ -180,8 +177,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to true * - * @param bool $analyze - * @return \Elastica\Query\QueryString Current object + * @param bool $analyze + * + * @return $this */ public function setAnalyzeWildcard($analyze = true) { @@ -193,8 +191,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to true. * - * @param bool $autoGenerate - * @return \Elastica\Query\QueryString Current object + * @param bool $autoGenerate + * + * @return $this */ public function setAutoGeneratePhraseQueries($autoGenerate = true) { @@ -202,13 +201,13 @@ class QueryString extends AbstractQuery } /** - * Sets the fields + * Sets the fields. If no fields are set, _all is chosen. + * + * @param array $fields Fields * - * If no fields are set, _all is chosen + * @throws \Elastica\Exception\InvalidException If given parameter is not an array * - * @param array $fields Fields - * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Query\QueryString Current object + * @return $this */ public function setFields(array $fields) { @@ -222,8 +221,9 @@ class QueryString extends AbstractQuery /** * Whether to use bool or dis_max queries to internally combine results for multi field search. * - * @param bool $value Determines whether to use - * @return \Elastica\Query\QueryString Current object + * @param bool $value Determines whether to use + * + * @return $this */ public function setUseDisMax($value = true) { @@ -235,8 +235,9 @@ class QueryString extends AbstractQuery * * If not set, defaults to 0. * - * @param int $tieBreaker - * @return \Elastica\Query\QueryString Current object + * @param int $tieBreaker + * + * @return $this */ public function setTieBreaker($tieBreaker = 0) { @@ -244,24 +245,38 @@ class QueryString extends AbstractQuery } /** - * Set a re-write condition. See https://github.com/elasticsearch/elasticsearch/issues/1186 for additional information + * Set a re-write condition. See https://github.com/elasticsearch/elasticsearch/issues/1186 for additional information. * - * @param string $rewrite - * @return \Elastica\Query\QueryString Current object + * @param string $rewrite + * + * @return $this */ - public function setRewrite($rewrite = "") + public function setRewrite($rewrite = '') { return $this->setParam('rewrite', $rewrite); } /** - * Converts query to array + * Set timezone option. + * + * @param string $timezone + * + * @return $this + */ + public function setTimezone($timezone) + { + return $this->setParam('time_zone', $timezone); + } + + /** + * Converts query to array. * * @see \Elastica\Query\AbstractQuery::toArray() + * * @return array Query array */ public function toArray() { - return array('query_string' => array_merge(array('query' => $this->_queryString), $this->getParams()),); + return array('query_string' => array_merge(array('query' => $this->_queryString), $this->getParams())); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Range.php b/vendor/ruflin/elastica/lib/Elastica/Query/Range.php index 54b79027..b2f9175a 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Range.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Range.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Query; /** - * Range query + * Range query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/range-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html */ class Range extends AbstractQuery { /** - * Constructor + * Constructor. * * @param string $fieldName Field name * @param array $args Field arguments @@ -26,11 +24,12 @@ class Range extends AbstractQuery } /** - * Adds a range field to the query + * Adds a range field to the query. + * + * @param string $fieldName Field name + * @param array $args Field arguments * - * @param string $fieldName Field name - * @param array $args Field arguments - * @return \Elastica\Query\Range Current object + * @return $this */ public function addField($fieldName, array $args) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Regexp.php b/vendor/ruflin/elastica/lib/Elastica/Query/Regexp.php new file mode 100644 index 00000000..22a48560 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Regexp.php @@ -0,0 +1,40 @@ +<?php +namespace Elastica\Query; + +/** + * Regexp query. + * + * @author Aurélien Le Grand <gnitg@yahoo.fr> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html + */ +class Regexp extends AbstractQuery +{ + /** + * Construct regexp query. + * + * @param string $key OPTIONAL Regexp key + * @param string $value OPTIONAL Regexp value + * @param float $boost OPTIONAL Boost value (default = 1) + */ + public function __construct($key = '', $value = null, $boost = 1.0) + { + if (!empty($key)) { + $this->setValue($key, $value, $boost); + } + } + + /** + * Sets the query expression for a key with its boost value. + * + * @param string $key + * @param string $value + * @param float $boost + * + * @return $this + */ + public function setValue($key, $value, $boost = 1.0) + { + return $this->setParam($key, array('value' => $value, 'boost' => $boost)); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Simple.php b/vendor/ruflin/elastica/lib/Elastica/Query/Simple.php index 2448ca79..6ba9310d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Simple.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Simple.php @@ -1,26 +1,23 @@ <?php - namespace Elastica\Query; /** * Simple query * Pure php array query. Can be used to create any not existing type of query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Simple extends AbstractQuery { /** - * Query + * Query. * * @var array Query */ protected $_query = array(); /** - * Constructs a query based on an array + * Constructs a query based on an array. * * @param array $query Query array */ @@ -30,10 +27,11 @@ class Simple extends AbstractQuery } /** - * Sets new query array + * Sets new query array. + * + * @param array $query Query array * - * @param array $query Query array - * @return \Elastica\Query\Simple Current object + * @return $this */ public function setQuery(array $query) { @@ -43,9 +41,10 @@ class Simple extends AbstractQuery } /** - * Converts query to array + * Converts query to array. * * @return array Query array + * * @see \Elastica\Query\AbstractQuery::toArray() */ public function toArray() diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/SimpleQueryString.php b/vendor/ruflin/elastica/lib/Elastica/Query/SimpleQueryString.php index a6c4ba9d..c2302d44 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/SimpleQueryString.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/SimpleQueryString.php @@ -1,20 +1,19 @@ <?php - namespace Elastica\Query; /** - * Class SimpleQueryString - * @package Elastica\Query - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html + * Class SimpleQueryString. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html */ class SimpleQueryString extends AbstractQuery { - const OPERATOR_AND = "and"; - const OPERATOR_OR = "or"; + const OPERATOR_AND = 'and'; + const OPERATOR_OR = 'or'; /** * @param string $query - * @param array $fields + * @param array $fields */ public function __construct($query, array $fields = array()) { @@ -25,41 +24,60 @@ class SimpleQueryString extends AbstractQuery } /** - * Set the querystring for this query + * Set the querystring for this query. + * * @param string $query see ES documentation for querystring syntax - * @return \Elastica\Query\SimpleQueryString + * + * @return $this */ public function setQuery($query) { - return $this->setParam("query", $query); + return $this->setParam('query', $query); } /** * @param string[] $fields the fields on which to perform this query. Defaults to index.query.default_field. - * @return \Elastica\Query\SimpleQueryString + * + * @return $this */ public function setFields(array $fields) { - return $this->setParam("fields", $fields); + return $this->setParam('fields', $fields); } /** - * Set the default operator to use if no explicit operator is defined in the query string + * Set the default operator to use if no explicit operator is defined in the query string. + * * @param string $operator see OPERATOR_* constants for options - * @return \Elastica\Query\SimpleQueryString + * + * @return $this */ public function setDefaultOperator($operator) { - return $this->setParam("default_operator", $operator); + return $this->setParam('default_operator', $operator); } /** - * Set the analyzer used to analyze each term of the query + * Set the analyzer used to analyze each term of the query. + * * @param string $analyzer - * @return \Elastica\Query\SimpleQueryString + * + * @return $this */ public function setAnalyzer($analyzer) { - return $this->setParam("analyzer", $analyzer); + return $this->setParam('analyzer', $analyzer); + } + + /** + * Set minimum_should_match option. + * + * @param int|string $minimumShouldMatch + * + * @return $this + */ + public function setMinimumShouldMatch($minimumShouldMatch) + { + return $this->setParam('minimum_should_match', $minimumShouldMatch); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Term.php b/vendor/ruflin/elastica/lib/Elastica/Query/Term.php index eb20eb86..8cfe0a88 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Term.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Term.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Query; /** - * Term query + * Term query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/term-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html */ class Term extends AbstractQuery { /** - * Constructs the Term query object + * Constructs the Term query object. * * @param array $term OPTIONAL Calls setTerm with the given $term array */ @@ -26,8 +24,9 @@ class Term extends AbstractQuery * Set term can be used instead of addTerm if some more special * values for a term have to be set. * - * @param array $term Term array - * @return \Elastica\Query\Term Current object + * @param array $term Term array + * + * @return $this */ public function setRawTerm(array $term) { @@ -35,12 +34,13 @@ class Term extends AbstractQuery } /** - * Adds a term to the term query + * Adds a term to the term query. + * + * @param string $key Key to query + * @param string|array $value Values(s) for the query. Boost can be set with array + * @param float $boost OPTIONAL Boost value (default = 1.0) * - * @param string $key Key to query - * @param string|array $value Values(s) for the query. Boost can be set with array - * @param float $boost OPTIONAL Boost value (default = 1.0) - * @return \Elastica\Query\Term Current object + * @return $this */ public function setTerm($key, $value, $boost = 1.0) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Terms.php b/vendor/ruflin/elastica/lib/Elastica/Query/Terms.php index 41cc9216..54f26461 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Terms.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Terms.php @@ -1,41 +1,40 @@ <?php - namespace Elastica\Query; + use Elastica\Exception\InvalidException; /** - * Terms query + * Terms query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/terms-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html */ class Terms extends AbstractQuery { /** - * Terms + * Terms. * * @var array Terms */ protected $_terms = array(); /** - * Params + * Params. * * @var array Params */ protected $_params = array(); /** - * Terms key + * Terms key. * * @var string Terms key */ protected $_key = ''; /** - * Construct terms query + * Construct terms query. * * @param string $key OPTIONAL Terms key * @param array $terms OPTIONAL Terms list @@ -46,11 +45,12 @@ class Terms extends AbstractQuery } /** - * Sets key and terms for the query + * Sets key and terms for the query. + * + * @param string $key Terms key + * @param array $terms Terms for the query. * - * @param string $key Terms key - * @param array $terms Terms for the query. - * @return \Elastica\Query\Terms + * @return $this */ public function setTerms($key, array $terms) { @@ -61,10 +61,11 @@ class Terms extends AbstractQuery } /** - * Adds a single term to the list + * Adds a single term to the list. * - * @param string $term Term - * @return \Elastica\Query\Terms + * @param string $term Term + * + * @return $this */ public function addTerm($term) { @@ -74,10 +75,11 @@ class Terms extends AbstractQuery } /** - * Sets the minimum matching values + * Sets the minimum matching values. + * + * @param int $minimum Minimum value * - * @param int $minimum Minimum value - * @return \Elastica\Query\Terms + * @return $this */ public function setMinimumMatch($minimum) { @@ -85,11 +87,13 @@ class Terms extends AbstractQuery } /** - * Converts the terms object to an array + * Converts the terms object to an array. * * @see \Elastica\Query\AbstractQuery::toArray() - * @throws \Elastica\Exception\InvalidException - * @return array Query array + * + * @throws \Elastica\Exception\InvalidException If term key is empty + * + * @return array Query array */ public function toArray() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/TopChildren.php b/vendor/ruflin/elastica/lib/Elastica/Query/TopChildren.php index baaf7501..6f15c79d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/TopChildren.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/TopChildren.php @@ -1,23 +1,22 @@ <?php - namespace Elastica\Query; + use Elastica\Query as BaseQuery; /** * Runs the child query with an estimated hits size, and out of the hit docs, aggregates it into parent docs. * - * @category Xodoa - * @package Elastica * @author Wu Yang <darkyoung@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/top-children-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-top-children-query.html */ class TopChildren extends AbstractQuery { /** - * Construct topChildren query + * Construct topChildren query. * * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @param string $type Parent document type + * @param string $type Parent document type */ public function __construct($query, $type = null) { @@ -26,10 +25,11 @@ class TopChildren extends AbstractQuery } /** - * Sets query object + * Sets query object. * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Query\TopChildren + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query + * + * @return $this */ public function setQuery($query) { @@ -40,10 +40,11 @@ class TopChildren extends AbstractQuery } /** - * Set type of the parent document + * Set type of the parent document. + * + * @param string $type Parent document type * - * @param string $type Parent document type - * @return \Elastica\Query\TopChildren Current object + * @return $this */ public function setType($type) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Wildcard.php b/vendor/ruflin/elastica/lib/Elastica/Query/Wildcard.php index 68aca67e..bfa5e751 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Query/Wildcard.php +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Wildcard.php @@ -1,19 +1,17 @@ <?php - namespace Elastica\Query; /** - * Wildcard query + * Wildcard query. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/query-dsl/wildcard-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html */ class Wildcard extends AbstractQuery { /** - * Construct wildcard query + * Construct wildcard query. * * @param string $key OPTIONAL Wildcard key * @param string $value OPTIONAL Wildcard value @@ -27,12 +25,13 @@ class Wildcard extends AbstractQuery } /** - * Sets the query expression for a key with its boost value + * Sets the query expression for a key with its boost value. + * + * @param string $key + * @param string $value + * @param float $boost * - * @param string $key - * @param string $value - * @param float $boost - * @return \Elastica\Query\Wildcard + * @return $this */ public function setValue($key, $value, $boost = 1.0) { diff --git a/vendor/ruflin/elastica/lib/Elastica/QueryBuilder.php b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder.php new file mode 100644 index 00000000..477c4525 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/QueryBuilder.php @@ -0,0 +1,114 @@ +<?php +namespace Elastica; + +use Elastica\Exception\QueryBuilderException; +use Elastica\QueryBuilder\DSL; +use Elastica\QueryBuilder\Facade; +use Elastica\QueryBuilder\Version; +use Elastica\QueryBuilder\Version\Version150; + +/** + * Query Builder. + * + * @author Manuel Andreo Garcia <andreo.garcia@googlemail.com> + */ +class QueryBuilder +{ + /** + * @var Version + */ + private $_version; + + /** + * @var Facade[] + */ + private $_facades = array(); + + /** + * Constructor. + * + * @param Version $version + */ + public function __construct(Version $version = null) + { + $this->_version = $version ?: new Version150(); + + $this->addDSL(new DSL\Query()); + $this->addDSL(new DSL\Filter()); + $this->addDSL(new DSL\Aggregation()); + $this->addDSL(new DSL\Suggest()); + } + + /** + * Returns Facade for custom DSL object. + * + * @param $dsl + * @param array $arguments + * + * @throws QueryBuilderException + * + * @return Facade + */ + public function __call($dsl, array $arguments) + { + if (false === isset($this->_facades[$dsl])) { + throw new QueryBuilderException('DSL "'.$dsl.'" not supported'); + } + + return $this->_facades[$dsl]; + } + + /** + * Adds a new DSL object. + * + * @param DSL $dsl + */ + public function addDSL(DSL $dsl) + { + $this->_facades[$dsl->getType()] = new Facade($dsl, $this->_version); + } + + /* + * convenience methods + */ + + /** + * Query DSL. + * + * @return DSL\Query + */ + public function query() + { + return $this->_facades[DSL::TYPE_QUERY]; + } + + /** + * Filter DSL. + * + * @return DSL\Filter + */ + public function filter() + { + return $this->_facades[DSL::TYPE_FILTER]; + } + + /** + * Aggregation DSL. + * + * @return DSL\Aggregation + */ + public function aggregation() + { + return $this->_facades[DSL::TYPE_AGGREGATION]; + } + + /** + * Suggest DSL. + * + * @return DSL\Suggest + */ + public function suggest() + { + return $this->_facades[DSL::TYPE_SUGGEST]; + } +} 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 +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Request.php b/vendor/ruflin/elastica/lib/Elastica/Request.php index 6c6298be..ab26ff09 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Request.php +++ b/vendor/ruflin/elastica/lib/Elastica/Request.php @@ -1,15 +1,11 @@ <?php - namespace Elastica; use Elastica\Exception\InvalidException; -use Elastica\JSON; /** - * Elastica Request object + * Elastica Request object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Request extends Param @@ -26,13 +22,14 @@ class Request extends Param protected $_connection; /** - * Construct + * Construct. * - * @param string $path Request path - * @param string $method OPTIONAL Request method (use const's) (default = self::GET) - * @param array $data OPTIONAL Data array - * @param array $query OPTIONAL Query params + * @param string $path Request path + * @param string $method OPTIONAL Request method (use const's) (default = self::GET) + * @param array $data OPTIONAL Data array + * @param array $query OPTIONAL Query params * @param Connection $connection + * * @return \Elastica\Request OPTIONAL Connection object */ public function __construct($path, $method = self::GET, $data = array(), array $query = array(), Connection $connection = null) @@ -48,10 +45,11 @@ class Request extends Param } /** - * Sets the request method. Use one of the for consts + * Sets the request method. Use one of the for consts. + * + * @param string $method Request method * - * @param string $method Request method - * @return \Elastica\Request Current object + * @return $this */ public function setMethod($method) { @@ -59,7 +57,7 @@ class Request extends Param } /** - * Get request method + * Get request method. * * @return string Request method */ @@ -69,10 +67,11 @@ class Request extends Param } /** - * Sets the request data + * Sets the request data. * - * @param array $data Request data - * @return \Elastica\Request + * @param array $data Request data + * + * @return $this */ public function setData($data) { @@ -80,7 +79,7 @@ class Request extends Param } /** - * Return request data + * Return request data. * * @return array Request data */ @@ -90,10 +89,11 @@ class Request extends Param } /** - * Sets the request path + * Sets the request path. + * + * @param string $path Request path * - * @param string $path Request path - * @return \Elastica\Request Current object + * @return $this */ public function setPath($path) { @@ -101,7 +101,7 @@ class Request extends Param } /** - * Return request path + * Return request path. * * @return string Request path */ @@ -111,7 +111,7 @@ class Request extends Param } /** - * Return query params + * Return query params. * * @return array Query params */ @@ -121,8 +121,9 @@ class Request extends Param } /** - * @param array $query - * @return \Elastica\Request + * @param array $query + * + * @return $this */ public function setQuery(array $query = array()) { @@ -130,8 +131,9 @@ class Request extends Param } /** - * @param \Elastica\Connection $connection - * @return \Elastica\Request + * @param \Elastica\Connection $connection + * + * @return $this */ public function setConnection(Connection $connection) { @@ -141,9 +143,10 @@ class Request extends Param } /** - * Return Connection Object + * Return Connection Object. + * + * @throws Exception\InvalidException If no valid connection was setted * - * @throws Exception\InvalidException * @return \Elastica\Connection */ public function getConnection() @@ -156,7 +159,7 @@ class Request extends Param } /** - * Sends request to server + * Sends request to server. * * @return \Elastica\Response Response object */ @@ -177,11 +180,12 @@ class Request extends Param if ($this->_connection) { $data['connection'] = $this->_connection->getParams(); } + return $data; } /** - * Converts request to curl request format + * Converts request to curl request format. * * @return string */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Rescore/AbstractRescore.php b/vendor/ruflin/elastica/lib/Elastica/Rescore/AbstractRescore.php index cb6c7cce..0839424d 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Rescore/AbstractRescore.php +++ b/vendor/ruflin/elastica/lib/Elastica/Rescore/AbstractRescore.php @@ -1,20 +1,19 @@ <?php - namespace Elastica\Rescore; + use Elastica\Param; /** * Abstract rescore object. Should be extended by all rescorers. * - * @category Xodoa - * @package Elastica * @author Jason Hu <mjhu91@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/rescore/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-rescore.html */ abstract class AbstractRescore extends Param { - /** - * Overridden to return rescore as name + /** + * Overridden to return rescore as name. * * @return string name */ @@ -24,13 +23,14 @@ abstract class AbstractRescore extends Param } /** - * Sets window_size + * Sets window_size. * * @param int $size - * @return \Elastica\Rescore + * + * @return $this */ public function setWindowSize($size) { return $this->setParam('window_size', $size); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Rescore/Query.php b/vendor/ruflin/elastica/lib/Elastica/Rescore/Query.php index 5041f3ed..3b0a1071 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Rescore/Query.php +++ b/vendor/ruflin/elastica/lib/Elastica/Rescore/Query.php @@ -1,21 +1,19 @@ <?php - namespace Elastica\Rescore; use Elastica\Query as BaseQuery; /** - * Query Rescore + * Query Rescore. * - * @category Xodoa - * @package Elastica * @author Jason Hu <mjhu91@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/api/search/rescore/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-rescore.html */ class Query extends AbstractRescore { /** - * Constructor + * Constructor. * * @param string|\Elastica\Query\AbstractQuery $rescoreQuery * @param string|\Elastica\Query\AbstractQuery $query @@ -28,7 +26,7 @@ class Query extends AbstractRescore /** * Override default implementation so params are in the format - * expected by elasticsearch + * expected by elasticsearch. * * @return array Rescore array */ @@ -44,10 +42,11 @@ class Query extends AbstractRescore } /** - * Sets rescoreQuery object + * Sets rescoreQuery object. + * + * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query * - * @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query - * @return \Elastica\Query\Rescore + * @return $this */ public function setRescoreQuery($rescoreQuery) { @@ -61,10 +60,11 @@ class Query extends AbstractRescore } /** - * Sets query_weight + * Sets query_weight. * * @param float $weight - * @return \Elastica\Query\Rescore + * + * @return $this */ public function setQueryWeight($weight) { @@ -75,10 +75,11 @@ class Query extends AbstractRescore } /** - * Sets rescore_query_weight + * Sets rescore_query_weight. * * @param float $size - * @return \Elastica\Query\Rescore + * + * @return $this */ public function setRescoreQueryWeight($weight) { @@ -87,4 +88,4 @@ class Query extends AbstractRescore return $this->setParam('query', $query); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Response.php b/vendor/ruflin/elastica/lib/Elastica/Response.php index 5c0ef24d..b537fe80 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Response.php +++ b/vendor/ruflin/elastica/lib/Elastica/Response.php @@ -1,69 +1,65 @@ <?php - namespace Elastica; use Elastica\Exception\JSONParseException; use Elastica\Exception\NotFoundException; -use Elastica\JSON; /** - * Elastica Response object + * Elastica Response object. * * Stores query time, and result array -> is given to result set, returned by ... * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Response { /** - * Query time + * Query time. * * @var float Query time */ protected $_queryTime = null; /** - * Response string (json) + * Response string (json). * * @var string Response */ protected $_responseString = ''; /** - * Error + * Error. * - * @var boolean Error + * @var bool Error */ protected $_error = false; /** - * Transfer info + * Transfer info. * * @var array transfer info */ protected $_transferInfo = array(); /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * HTTP response status code + * HTTP response status code. * * @var int */ protected $_status = null; /** - * Construct + * Construct. * * @param string|array $responseString Response string (json) - * @param int $responseStatus http status code + * @param int $responseStatus http status code */ public function __construct($responseString, $responseStatus = null) { @@ -76,7 +72,7 @@ class Response } /** - * Error message + * Error message. * * @return string Error message */ @@ -93,7 +89,7 @@ class Response } /** - * True if response has error + * True if response has error. * * @return bool True if response has error */ @@ -109,7 +105,7 @@ class Response } /** - * True if response has failed shards + * True if response has failed shards. * * @return bool True if response has failed shards */ @@ -125,7 +121,7 @@ class Response } /** - * Checks if the query returned ok + * Checks if the query returned ok. * * @return bool True if ok */ @@ -138,11 +134,19 @@ class Response if ($data['status'] >= 200 && $data['status'] <= 300) { return true; } + return false; } + if (isset($data['items'])) { + if (isset($data['errors']) && true === $data['errors']) { + return false; + } + foreach ($data['items'] as $item) { - if (false == $item['index']['ok']) { + if (isset($item['index']['ok']) && false == $item['index']['ok']) { + return false; + } elseif (isset($item['index']['status']) && ($item['index']['status'] < 200 || $item['index']['status'] >= 300)) { return false; } } @@ -166,9 +170,8 @@ class Response return $this->_status; } - /** - * Response data array + * Response data array. * * @return array Response data array */ @@ -214,17 +217,19 @@ class Response * Sets the transfer info of the curl request. This function is called * from the \Elastica\Client::_callService . * - * @param array $transferInfo The curl transfer information. - * @return \Elastica\Response Current object + * @param array $transferInfo The curl transfer information. + * + * @return $this */ public function setTransferInfo(array $transferInfo) { $this->_transferInfo = $transferInfo; + return $this; } /** - * This is only available if DEBUG constant is set to true + * Returns query execution time. * * @return float Query time */ @@ -234,10 +239,11 @@ class Response } /** - * Sets the query time + * Sets the query time. + * + * @param float $queryTime Query time * - * @param float $queryTime Query time - * @return \Elastica\Response Current object + * @return $this */ public function setQueryTime($queryTime) { @@ -247,26 +253,28 @@ class Response } /** - * Time request took + * Time request took. * * @throws \Elastica\Exception\NotFoundException - * @return int Time request took + * + * @return int Time request took */ public function getEngineTime() { $data = $this->getData(); if (!isset($data['took'])) { - throw new NotFoundException("Unable to find the field [took]from the response"); + throw new NotFoundException('Unable to find the field [took]from the response'); } return $data['took']; } /** - * Get the _shard statistics for the response + * Get the _shard statistics for the response. * * @throws \Elastica\Exception\NotFoundException + * * @return array */ public function getShardsStatistics() @@ -274,16 +282,17 @@ class Response $data = $this->getData(); if (!isset($data['_shards'])) { - throw new NotFoundException("Unable to find the field [_shards] from the response"); + throw new NotFoundException('Unable to find the field [_shards] from the response'); } return $data['_shards']; } /** - * Get the _scroll value for the response + * Get the _scroll value for the response. * * @throws \Elastica\Exception\NotFoundException + * * @return string */ public function getScrollId() @@ -291,7 +300,7 @@ class Response $data = $this->getData(); if (!isset($data['_scroll_id'])) { - throw new NotFoundException("Unable to find the field [_scroll_id] from the response"); + throw new NotFoundException('Unable to find the field [_scroll_id] from the response'); } return $data['_scroll_id']; diff --git a/vendor/ruflin/elastica/lib/Elastica/Result.php b/vendor/ruflin/elastica/lib/Elastica/Result.php index e8aa8e3d..6b3c68f2 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Result.php +++ b/vendor/ruflin/elastica/lib/Elastica/Result.php @@ -1,27 +1,24 @@ <?php - namespace Elastica; /** - * Elastica result item + * Elastica result item. * * Stores all information from a result * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Result { /** - * Hit array + * Hit array. * * @var array Hit array */ protected $_hit = array(); /** - * Constructs a single results object + * Constructs a single results object. * * @param array $hit Hit data */ @@ -31,14 +28,15 @@ class Result } /** - * Returns a param from the result hit array + * Returns a param from the result hit array. * * This function can be used to retrieve all data for which a specific * function doesn't exist. * If the param does not exist, an empty array is returned * - * @param string $name Param name - * @return array Result data + * @param string $name Param name + * + * @return array Result data */ public function getParam($name) { @@ -50,18 +48,19 @@ class Result } /** - * Test if a param from the result hit is set + * Test if a param from the result hit is set. + * + * @param string $name Param name to test * - * @param string $name Param name to test - * @return boolean True if the param is set, false otherwise + * @return bool True if the param is set, false otherwise */ public function hasParam($name) { return isset($this->_hit[$name]); - } - + } + /** - * Returns the hit id + * Returns the hit id. * * @return string Hit id */ @@ -71,7 +70,7 @@ class Result } /** - * Returns the type of the result + * Returns the type of the result. * * @return string Result type */ @@ -81,7 +80,7 @@ class Result } /** - * Returns list of fields + * Returns list of fields. * * @return array Fields list */ @@ -91,17 +90,17 @@ class Result } /** - * Returns whether result has fields - * + * Returns whether result has fields. + * * @return bool */ public function hasFields() { return $this->hasParam('fields'); - } - + } + /** - * Returns the index name of the result + * Returns the index name of the result. * * @return string Index name */ @@ -111,7 +110,7 @@ class Result } /** - * Returns the score of the result + * Returns the score of the result. * * @return float Result score */ @@ -121,7 +120,7 @@ class Result } /** - * Returns the raw hit array + * Returns the raw hit array. * * @return array Hit array */ @@ -131,7 +130,7 @@ class Result } /** - * Returns the version information from the hit + * Returns the version information from the hit. * * @return string|int Document version */ @@ -141,7 +140,7 @@ class Result } /** - * Returns result data + * Returns result data. * * Checks for partial result data with getFields, falls back to getSource * @@ -157,7 +156,7 @@ class Result } /** - * Returns the result source + * Returns the result source. * * @return array Source data array */ @@ -167,7 +166,7 @@ class Result } /** - * Returns result data + * Returns result data. * * @return array Result data array */ @@ -187,12 +186,13 @@ class Result } /** - * Magic function to directly access keys inside the result + * Magic function to directly access keys inside the result. * * Returns null if key does not exist * - * @param string $key Key name - * @return mixed Key value + * @param string $key Key name + * + * @return mixed Key value */ public function __get($key) { @@ -200,11 +200,12 @@ class Result return array_key_exists($key, $source) ? $source[$key] : null; } - + /** - * Magic function to support isset() calls + * Magic function to support isset() calls. * * @param string $key Key name + * * @return bool */ public function __isset($key) diff --git a/vendor/ruflin/elastica/lib/Elastica/ResultSet.php b/vendor/ruflin/elastica/lib/Elastica/ResultSet.php index 3bb94fb0..ae4141b9 100644 --- a/vendor/ruflin/elastica/lib/Elastica/ResultSet.php +++ b/vendor/ruflin/elastica/lib/Elastica/ResultSet.php @@ -1,43 +1,48 @@ <?php - namespace Elastica; + use Elastica\Exception\InvalidException; /** - * Elastica result set + * Elastica result set. * * List of all hits that are returned for a search on elasticsearch * Result set implements iterator * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class ResultSet implements \Iterator, \Countable, \ArrayAccess { /** - * Results + * Class for the static create method to use. + * + * @var string + */ + protected static $_class = 'Elastica\\ResultSet'; + + /** + * Results. * * @var array Results */ protected $_results = array(); /** - * Current position + * Current position. * * @var int Current position */ protected $_position = 0; /** - * Response + * Response. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Query + * Query. * * @var \Elastica\Query Query object */ @@ -49,7 +54,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess protected $_took = 0; /** - * @var boolean + * @var bool */ protected $_timedOut = false; @@ -64,7 +69,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess protected $_maxScore = 0; /** - * Constructs ResultSet object + * Constructs ResultSet object. * * @param \Elastica\Response $response Response object * @param \Elastica\Query $query Query object @@ -77,7 +82,33 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Loads all data into the results object (initialisation) + * Creates a new ResultSet object. Can be configured to return a different + * implementation of the ResultSet class. + * + * @param Response $response + * @param Query $query + * + * @return ResultSet + */ + public static function create(Response $response, Query $query) + { + $class = static::$_class; + + return new $class($response, $query); + } + + /** + * Sets the class to be used for the static create method. + * + * @param string $class + */ + public static function setClass($class) + { + static::$_class = $class; + } + + /** + * Loads all data into the results object (initialisation). * * @param \Elastica\Response $response Response object */ @@ -97,7 +128,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns all results + * Returns all results. * * @return Result[] Results */ @@ -107,29 +138,35 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns true if the response contains suggestion results; false otherwise + * Returns true if the response contains suggestion results; false otherwise. + * * @return bool */ - public function hasSuggests(){ + public function hasSuggests() + { $data = $this->_response->getData(); + return isset($data['suggest']); } /** - * Return all suggests - * - * @return array suggest results - */ - public function getSuggests() + * Return all suggests. + * + * @return array suggest results + */ + public function getSuggests() { $data = $this->_response->getData(); + return isset($data['suggest']) ? $data['suggest'] : array(); } /** - * Returns whether facets exist + * Returns whether facets exist. * - * @return boolean Facet existence + * @return bool Facet existence + * + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ public function hasFacets() { @@ -139,9 +176,9 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns whether aggregations exist + * Returns whether aggregations exist. * - * @return boolean Aggregation existence + * @return bool Aggregation existence */ public function hasAggregations() { @@ -151,7 +188,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns all aggregation results + * Returns all aggregation results. * * @return array */ @@ -163,10 +200,13 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Retrieve a specific aggregation from this result set + * Retrieve a specific aggregation from this result set. + * * @param string $name the name of the desired aggregation - * @return array + * * @throws Exception\InvalidException if an aggregation by the given name cannot be found + * + * @return array */ public function getAggregation($name) { @@ -179,9 +219,11 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns all facets results + * Returns all facets results. * * @return array Facet results + * + * @deprecated Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. */ public function getFacets() { @@ -191,7 +233,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns the total number of found hits + * Returns the total number of found hits. * * @return int Total hits */ @@ -201,7 +243,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns the max score of the results found + * Returns the max score of the results found. * * @return float Max Score */ @@ -211,27 +253,27 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns the total number of ms for this search to complete - * - * @return int Total time - */ + * Returns the total number of ms for this search to complete. + * + * @return int Total time + */ public function getTotalTime() { return (int) $this->_took; } /** - * Returns true iff the query has timed out - * - * @return bool Timed out - */ + * Returns true iff the query has timed out. + * + * @return bool Timed out + */ public function hasTimedOut() { return (bool) $this->_timedOut; } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -249,7 +291,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns size of current set + * Returns size of current set. * * @return int Size of set */ @@ -259,7 +301,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns size of current suggests + * Returns size of current suggests. * * @return int Size of suggests */ @@ -269,7 +311,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns the current object of the set + * Returns the current object of the set. * * @return \Elastica\Result|bool Set object or false if not valid (no more entries) */ @@ -283,7 +325,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Sets pointer (current) to the next item of the set + * Sets pointer (current) to the next item of the set. */ public function next() { @@ -293,7 +335,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Returns the position of the current entry + * Returns the position of the current entry. * * @return int Current position */ @@ -303,7 +345,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Check if an object exists at the current position + * Check if an object exists at the current position. * * @return bool True if object exists */ @@ -313,7 +355,7 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Resets position to 0, restarts iterator + * Resets position to 0, restarts iterator. */ public function rewind() { @@ -321,11 +363,13 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Whether a offset exists + * Whether a offset exists. + * * @link http://php.net/manual/en/arrayaccess.offsetexists.php * - * @param integer $offset - * @return boolean true on success or false on failure. + * @param int $offset + * + * @return bool true on success or false on failure. */ public function offsetExists($offset) { @@ -333,48 +377,54 @@ class ResultSet implements \Iterator, \Countable, \ArrayAccess } /** - * Offset to retrieve + * Offset to retrieve. + * * @link http://php.net/manual/en/arrayaccess.offsetget.php * - * @param integer $offset - * @throws Exception\InvalidException - * @return Result|null + * @param int $offset + * + * @throws Exception\InvalidException If offset doesn't exist + * + * @return Result|null */ public function offsetGet($offset) { if ($this->offsetExists($offset)) { return $this->_results[$offset]; } else { - throw new InvalidException("Offset does not exist."); + throw new InvalidException('Offset does not exist.'); } } /** - * Offset to set + * Offset to set. + * * @link http://php.net/manual/en/arrayaccess.offsetset.php * - * @param integer $offset - * @param Result $value - * @throws Exception\InvalidException + * @param int $offset + * @param Result $value + * + * @throws Exception\InvalidException */ public function offsetSet($offset, $value) { if (!($value instanceof Result)) { - throw new InvalidException("ResultSet is a collection of Result only."); + throw new InvalidException('ResultSet is a collection of Result only.'); } if (!isset($this->_results[$offset])) { - throw new InvalidException("Offset does not exist."); + throw new InvalidException('Offset does not exist.'); } $this->_results[$offset] = $value; } /** - * Offset to unset + * Offset to unset. + * * @link http://php.net/manual/en/arrayaccess.offsetunset.php * - * @param integer $offset + * @param int $offset */ public function offsetUnset($offset) { diff --git a/vendor/ruflin/elastica/lib/Elastica/ScanAndScroll.php b/vendor/ruflin/elastica/lib/Elastica/ScanAndScroll.php index c83054e8..6713856e 100644 --- a/vendor/ruflin/elastica/lib/Elastica/ScanAndScroll.php +++ b/vendor/ruflin/elastica/lib/Elastica/ScanAndScroll.php @@ -1,150 +1,80 @@ <?php - namespace Elastica; /** - * scan and scroll object + * Scan and Scroll Iterator. * - * @category Xodoa - * @package Elastica * @author Manuel Andreo Garcia <andreo.garcia@gmail.com> - * @link http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/scan-scroll.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/guide/current/scan-scroll.html */ -class ScanAndScroll implements \Iterator { - - /** - * time value parameter - * - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html - * @var string - */ - public $expiryTime; - +class ScanAndScroll extends Scroll +{ /** * @var int */ public $sizePerShard; /** - * @var Search - */ - protected $_search; - - /** - * @var null|string - */ - protected $_nextScrollId = null; - - /** - * @var null|string - */ - protected $_lastScrollId = null; - - /** - * @var null|ResultSet - */ - protected $_currentResultSet = null; - - /** - * Constructs scroll iterator object + * Constructor. * * @param Search $search * @param string $expiryTime - * @param int $sizePerShard + * @param int $sizePerShard */ - public function __construct(Search $search, $expiryTime = '1m', $sizePerShard = 1000) { - $this->_search = $search; - $this->expiryTime = $expiryTime; + public function __construct(Search $search, $expiryTime = '1m', $sizePerShard = 1000) + { $this->sizePerShard = $sizePerShard; - } - /** - * Return the current result set - * - * @link http://php.net/manual/en/iterator.current.php - * @return ResultSet - */ - public function current() { - return $this->_currentResultSet; + parent::__construct($search, $expiryTime); } /** - * Perform next scroll search + * Initial scan search. * - * @link http://php.net/manual/en/iterator.next.php - * @return void - */ - public function next() { - $this->_scroll(); - } - - /** - * Return the scroll id of current scroll request - * - * @link http://php.net/manual/en/iterator.key.php - * @return string - */ - public function key() { - return $this->_lastScrollId; - } - - /** - * Returns true if current result set contains one hit - * - * @link http://php.net/manual/en/iterator.valid.php - * @return boolean - */ - public function valid() { - return - $this->_nextScrollId !== null - && $this->_currentResultSet !== null - && $this->_currentResultSet->count() > 0; - } - - /** - * Start the initial scan search * @link http://php.net/manual/en/iterator.rewind.php - * @throws \Elastica\Exception\InvalidException - * @return void */ - public function rewind() { - $this->_search->getQuery()->setSize($this->sizePerShard); + public function rewind() + { + // reset state + $this->_nextScrollId = null; + $this->_options = array(null, null, null, null); - $this->_search->setOption(Search::OPTION_SEARCH_TYPE, Search::OPTION_SEARCH_TYPE_SCAN); - $this->_search->setOption(Search::OPTION_SCROLL, $this->expiryTime); + $this->_saveOptions(); // initial scan request + $this->_search->getQuery()->setSize($this->sizePerShard); + $this->_search->setOption(Search::OPTION_SCROLL, $this->expiryTime); + $this->_search->setOption(Search::OPTION_SCROLL_ID, null); + $this->_search->setOption(Search::OPTION_SEARCH_TYPE, Search::OPTION_SEARCH_TYPE_SCAN); $this->_setScrollId($this->_search->search()); - // trigger first scroll request - $this->_scroll(); + $this->_revertOptions(); + + // first scroll request + $this->next(); } /** - * Perform next scroll search - * @throws \Elastica\Exception\InvalidException - * @return void + * Save all search options manipulated by Scroll. */ - protected function _scroll() { - $this->_search->setOption(Search::OPTION_SEARCH_TYPE, Search::OPTION_SEARCH_TYPE_SCROLL); - $this->_search->setOption(Search::OPTION_SCROLL_ID, $this->_nextScrollId); + protected function _saveOptions() + { + $query = $this->_search->getQuery(); + if ($query->hasParam('size')) { + $this->_options[3] = $query->getParam('size'); + } - $resultSet = $this->_search->search(); - $this->_currentResultSet = $resultSet; - $this->_setScrollId($resultSet); + parent::_saveOptions(); } /** - * Save last scroll id and extract the new one if possible - * @param ResultSet $resultSet + * Revert search options to previously saved state. */ - protected function _setScrollId(ResultSet $resultSet) { - $this->_lastScrollId = $this->_nextScrollId; + protected function _revertOptions() + { + $this->_search->getQuery()->setSize($this->_options[3]); - $this->_nextScrollId = null; - if($resultSet->getResponse()->isOk()) { - $this->_nextScrollId = $resultSet->getResponse()->getScrollId(); - } + parent::_revertOptions(); } - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Script.php b/vendor/ruflin/elastica/lib/Elastica/Script.php index 99d9a6aa..6df3d583 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Script.php +++ b/vendor/ruflin/elastica/lib/Elastica/Script.php @@ -1,21 +1,19 @@ <?php - namespace Elastica; use Elastica\Exception\InvalidException; /** - * Script objects, containing script internals + * Script objects, containing script internals. * - * @category Xodoa - * @package Elastica * @author avasilenko <aa.vasilenko@gmail.com> - * @link http://www.elasticsearch.org/guide/reference/modules/scripting.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html */ class Script extends AbstractUpdateAction { - const LANG_MVEL = 'mvel'; - const LANG_JS = 'js'; + const LANG_MVEL = 'mvel'; + const LANG_JS = 'js'; const LANG_GROOVY = 'groovy'; const LANG_PYTHON = 'python'; const LANG_NATIVE = 'native'; @@ -38,9 +36,11 @@ class Script extends AbstractUpdateAction public function __construct($script, array $params = null, $lang = null, $id = null) { $this->setScript($script); + if ($params) { $this->setParams($params); } + if ($lang) { $this->setLang($lang); } @@ -52,10 +52,14 @@ class Script extends AbstractUpdateAction /** * @param string $lang + * + * @return $this */ public function setLang($lang) { $this->_lang = $lang; + + return $this; } /** @@ -68,10 +72,14 @@ class Script extends AbstractUpdateAction /** * @param string $script + * + * @return $this */ public function setScript($script) { $this->_script = $script; + + return $this; } /** @@ -83,9 +91,11 @@ class Script extends AbstractUpdateAction } /** - * @param string|array|\Elastica\Script $data + * @param string|array|\Elastica\Script $data + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Script + * + * @return self */ public static function create($data) { @@ -103,9 +113,11 @@ class Script extends AbstractUpdateAction } /** - * @param array $data + * @param array $data + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Script + * + * @return self */ protected static function _createFromArray(array $data) { @@ -118,6 +130,7 @@ class Script extends AbstractUpdateAction if (isset($data['lang'])) { $script->setLang($data['lang']); } + if (isset($data['params'])) { if (!is_array($data['params'])) { throw new InvalidException("\$data['params'] should be array"); @@ -136,9 +149,11 @@ class Script extends AbstractUpdateAction $array = array( 'script' => $this->_script, ); + if (!empty($this->_params)) { $array['params'] = $this->_params; } + if ($this->_lang) { $array['lang'] = $this->_lang; } diff --git a/vendor/ruflin/elastica/lib/Elastica/ScriptFields.php b/vendor/ruflin/elastica/lib/Elastica/ScriptFields.php index 0a8b4871..41b5b913 100644 --- a/vendor/ruflin/elastica/lib/Elastica/ScriptFields.php +++ b/vendor/ruflin/elastica/lib/Elastica/ScriptFields.php @@ -1,15 +1,14 @@ <?php - namespace Elastica; + use Elastica\Exception\InvalidException; /** - * Container for scripts as fields + * Container for scripts as fields. * - * @category Xodoa - * @package Elastica * @author Sebastien Lavoie <github@lavoie.sl> - * @link http://www.elasticsearch.org/guide/reference/api/search/script-fields.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-script-fields.html */ class ScriptFields extends Param { @@ -24,10 +23,12 @@ class ScriptFields extends Param } /** - * @param string $name Name of the Script field - * @param \Elastica\Script $script + * @param string $name Name of the Script field + * @param \Elastica\Script $script + * * @throws \Elastica\Exception\InvalidException - * @return \Elastica\ScriptFields + * + * @return $this */ public function addScript($name, Script $script) { @@ -40,8 +41,9 @@ class ScriptFields extends Param } /** - * @param \Elastica\Script[]|array $scripts Associative array of string => Elastica\Script - * @return \Elastica\ScriptFields + * @param \Elastica\Script[]|array $scripts Associative array of string => Elastica\Script + * + * @return $this */ public function setScripts(array $scripts) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Scroll.php b/vendor/ruflin/elastica/lib/Elastica/Scroll.php new file mode 100644 index 00000000..44fa73e9 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Scroll.php @@ -0,0 +1,174 @@ +<?php +namespace Elastica; + +/** + * Scroll Iterator. + * + * @author Manuel Andreo Garcia <andreo.garcia@gmail.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html + */ +class Scroll implements \Iterator +{ + /** + * @var string + */ + public $expiryTime; + + /** + * @var Search + */ + protected $_search; + + /** + * @var null|string + */ + protected $_nextScrollId = null; + + /** + * @var null|ResultSet + */ + protected $_currentResultSet = null; + + /** + * 0: scroll<br> + * 1: scroll id<br> + * 2: search type. + * + * @var array + */ + protected $_options = array(null, null, null); + + /** + * Constructor. + * + * @param Search $search + * @param string $expiryTime + */ + public function __construct(Search $search, $expiryTime = '1m') + { + $this->_search = $search; + $this->expiryTime = $expiryTime; + } + + /** + * Returns current result set. + * + * @link http://php.net/manual/en/iterator.current.php + * + * @return ResultSet + */ + public function current() + { + return $this->_currentResultSet; + } + + /** + * Next scroll search. + * + * @link http://php.net/manual/en/iterator.next.php + */ + public function next() + { + $this->_saveOptions(); + + $this->_search->setOption(Search::OPTION_SCROLL, $this->expiryTime); + $this->_search->setOption(Search::OPTION_SCROLL_ID, $this->_nextScrollId); + $this->_search->setOption(Search::OPTION_SEARCH_TYPE, Search::OPTION_SEARCH_TYPE_SCROLL); + $this->_setScrollId($this->_search->search()); + + $this->_revertOptions(); + } + + /** + * Returns scroll id. + * + * @link http://php.net/manual/en/iterator.key.php + * + * @return string + */ + public function key() + { + return $this->_nextScrollId; + } + + /** + * Returns true if current result set contains at least one hit. + * + * @link http://php.net/manual/en/iterator.valid.php + * + * @return bool + */ + public function valid() + { + return + $this->_nextScrollId !== null + && $this->_currentResultSet !== null + && $this->_currentResultSet->count() > 0; + } + + /** + * Initial scroll search. + * + * @link http://php.net/manual/en/iterator.rewind.php + */ + public function rewind() + { + // reset state + $this->_nextScrollId = null; + $this->_options = array(null, null, null); + + // initial search + $this->_saveOptions(); + + $this->_search->setOption(Search::OPTION_SCROLL, $this->expiryTime); + $this->_search->setOption(Search::OPTION_SCROLL_ID, null); + $this->_search->setOption(Search::OPTION_SEARCH_TYPE, null); + $this->_setScrollId($this->_search->search()); + + $this->_revertOptions(); + } + + /** + * Prepares Scroll for next request. + * + * @param ResultSet $resultSet + */ + protected function _setScrollId(ResultSet $resultSet) + { + $this->_currentResultSet = $resultSet; + + $this->_nextScrollId = null; + if ($resultSet->getResponse()->isOk()) { + $this->_nextScrollId = $resultSet->getResponse()->getScrollId(); + } + } + + /** + * Save all search options manipulated by Scroll. + */ + protected function _saveOptions() + { + if ($this->_search->hasOption(Search::OPTION_SCROLL)) { + $this->_options[0] = $this->_search->getOption(Search::OPTION_SCROLL); + } + + if ($this->_search->hasOption(Search::OPTION_SCROLL_ID)) { + $this->_options[1] = $this->_search->getOption(Search::OPTION_SCROLL_ID); + } + + if ($this->_search->hasOption(Search::OPTION_SEARCH_TYPE)) { + $this->_options[2] = $this->_search->getOption(Search::OPTION_SEARCH_TYPE); + } + } + + /** + * Revert search options to previously saved state. + */ + protected function _revertOptions() + { + $this->_search->setOption(Search::OPTION_SCROLL, $this->_options[0]); + $this->_search->setOption(Search::OPTION_SCROLL_ID, $this->_options[1]); + $this->_search->setOption(Search::OPTION_SEARCH_TYPE, $this->_options[2]); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Search.php b/vendor/ruflin/elastica/lib/Elastica/Search.php index 4163a1a2..7306eb75 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Search.php +++ b/vendor/ruflin/elastica/lib/Elastica/Search.php @@ -1,15 +1,11 @@ <?php - namespace Elastica; use Elastica\Exception\InvalidException; -use Elastica\Suggest; /** - * Elastica search object + * Elastica search object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Search @@ -26,6 +22,7 @@ class Search const OPTION_SIZE = 'size'; const OPTION_SCROLL = 'scroll'; const OPTION_SCROLL_ID = 'scroll_id'; + const OPTION_QUERY_CACHE = 'query_cache'; /* * Search types @@ -38,16 +35,17 @@ class Search const OPTION_SEARCH_TYPE_QUERY_AND_FETCH = 'query_and_fetch'; const OPTION_SEARCH_TYPE_SUGGEST = 'suggest'; const OPTION_SEARCH_TYPE_SCROLL = 'scroll'; + const OPTION_SEARCH_IGNORE_UNAVAILABLE = 'ignore_unavailable'; /** - * Array of indices + * Array of indices. * * @var array */ protected $_indices = array(); /** - * Array of types + * Array of types. * * @var array */ @@ -64,14 +62,14 @@ class Search protected $_options = array(); /** - * Client object + * Client object. * * @var \Elastica\Client */ protected $_client; /** - * Constructs search object + * Constructs search object. * * @param \Elastica\Client $client Client object */ @@ -81,11 +79,13 @@ class Search } /** - * Adds a index to the list + * Adds a index to the list. + * + * @param \Elastica\Index|string $index Index object or string * - * @param \Elastica\Index|string $index Index object or string * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Search Current object + * + * @return $this */ public function addIndex($index) { @@ -93,20 +93,21 @@ class Search $index = $index->getName(); } - if (!is_string($index)) { + if (!is_scalar($index)) { throw new InvalidException('Invalid param type'); } - $this->_indices[] = $index; + $this->_indices[] = (string) $index; return $this; } /** - * Add array of indices at once + * Add array of indices at once. * - * @param array $indices - * @return \Elastica\Search + * @param array $indices + * + * @return $this */ public function addIndices(array $indices = array()) { @@ -118,11 +119,13 @@ class Search } /** - * Adds a type to the current search + * Adds a type to the current search. + * + * @param \Elastica\Type|string $type Type name or object * - * @param \Elastica\Type|string $type Type name or object - * @return \Elastica\Search Search object * @throws \Elastica\Exception\InvalidException + * + * @return $this */ public function addType($type) { @@ -140,10 +143,11 @@ class Search } /** - * Add array of types + * Add array of types. * - * @param array $types - * @return \Elastica\Search + * @param array $types + * + * @return $this */ public function addTypes(array $types = array()) { @@ -155,8 +159,9 @@ class Search } /** - * @param string|array|\Elastica\Query|\Elastica\Suggest|\Elastica\Query\AbstractQuery|\Elastica\Filter\AbstractFilter $query| - * @return \Elastica\Search + * @param string|array|\Elastica\Query|\Elastica\Suggest|\Elastica\Query\AbstractQuery|\Elastica\Filter\AbstractFilter $query| + * + * @return $this */ public function setQuery($query) { @@ -166,9 +171,10 @@ class Search } /** - * @param string $key - * @param mixed $value - * @return \Elastica\Search + * @param string $key + * @param mixed $value + * + * @return $this */ public function setOption($key, $value) { @@ -180,8 +186,9 @@ class Search } /** - * @param array $options - * @return \Elastica\Search + * @param array $options + * + * @return $this */ public function setOptions(array $options) { @@ -195,7 +202,7 @@ class Search } /** - * @return \Elastica\Search + * @return $this */ public function clearOptions() { @@ -205,9 +212,10 @@ class Search } /** - * @param string $key - * @param mixed $value - * @return \Elastica\Search + * @param string $key + * @param mixed $value + * + * @return $this */ public function addOption($key, $value) { @@ -223,7 +231,8 @@ class Search } /** - * @param string $key + * @param string $key + * * @return bool */ public function hasOption($key) @@ -232,14 +241,16 @@ class Search } /** - * @param string $key - * @return mixed + * @param string $key + * * @throws \Elastica\Exception\InvalidException + * + * @return mixed */ public function getOption($key) { if (!$this->hasOption($key)) { - throw new InvalidException('Option ' . $key . ' does not exist'); + throw new InvalidException('Option '.$key.' does not exist'); } return $this->_options[$key]; @@ -254,9 +265,11 @@ class Search } /** - * @param string $key - * @return bool + * @param string $key + * * @throws \Elastica\Exception\InvalidException + * + * @return bool */ protected function _validateOption($key) { @@ -271,14 +284,16 @@ class Search case self::OPTION_SCROLL: case self::OPTION_SCROLL_ID: case self::OPTION_SEARCH_TYPE_SUGGEST: + case self::OPTION_SEARCH_IGNORE_UNAVAILABLE: + case self::OPTION_QUERY_CACHE: return true; } - throw new InvalidException('Invalid option ' . $key); + throw new InvalidException('Invalid option '.$key); } /** - * Return client object + * Return client object. * * @return \Elastica\Client Client object */ @@ -288,7 +303,7 @@ class Search } /** - * Return array of indices + * Return array of indices. * * @return array List of index names */ @@ -307,6 +322,7 @@ class Search /** * @param Index|string $index + * * @return bool */ public function hasIndex($index) @@ -319,7 +335,7 @@ class Search } /** - * Return array of types + * Return array of types. * * @return array List of types */ @@ -338,6 +354,7 @@ class Search /** * @param \Elastica\Type|string $type + * * @return bool */ public function hasType($type) @@ -362,10 +379,11 @@ class Search } /** - * Creates new search object + * Creates new search object. * - * @param \Elastica\SearchableInterface $searchObject - * @return \Elastica\Search + * @param \Elastica\SearchableInterface $searchObject + * + * @return Search */ public static function create(SearchableInterface $searchObject) { @@ -373,7 +391,7 @@ class Search } /** - * Combines indices and types to the search request path + * Combines indices and types to the search request path. * * @return string Search path */ @@ -397,19 +415,21 @@ class Search } if (!empty($types)) { - $path .= '/' . implode(',', $types); + $path .= '/'.implode(',', $types); } // Add full path based on indices and types -> could be all - return $path . '/_search'; + return $path.'/_search'; } /** - * Search in the set indices, types + * Search in the set indices, types. + * + * @param mixed $query + * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) * - * @param mixed $query - * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) * @throws \Elastica\Exception\InvalidException + * * @return \Elastica\ResultSet */ public function search($query = '', $options = null) @@ -436,13 +456,13 @@ class Search $params ); - return new ResultSet($response, $query); + return ResultSet::create($response, $query); } /** - * * @param mixed $query - * @param $fullResult (default = false) By default only the total hit count is returned. If set to true, the full ResultSet including facets is returned. + * @param $fullResult (default = false) By default only the total hit count is returned. If set to true, the full ResultSet including aggregations is returned. + * * @return int|ResultSet */ public function count($query = '', $fullResult = false) @@ -458,15 +478,16 @@ class Search $query->toArray(), array(self::OPTION_SEARCH_TYPE => self::OPTION_SEARCH_TYPE_COUNT) ); - $resultSet = new ResultSet($response, $query); + $resultSet = ResultSet::create($response, $query); return $fullResult ? $resultSet : $resultSet->getTotalHits(); } /** - * @param array|int $options - * @param string|array|\Elastica\Query $query - * @return \Elastica\Search + * @param array|int $options + * @param string|array|\Elastica\Query $query + * + * @return $this */ public function setOptionsAndQuery($options = null, $query = '') { @@ -493,7 +514,8 @@ class Search /** * @param Suggest $suggest - * @return Search + * + * @return $this */ public function setSuggest(Suggest $suggest) { @@ -501,14 +523,31 @@ class Search } /** - * Returns the ScanAndScroll Iterator + * Returns the Scroll Iterator. + * + * @see Elastica\Scroll + * + * @param string $expiryTime + * + * @return Scroll + */ + public function scroll($expiryTime = '1m') + { + return new Scroll($this, $expiryTime); + } + + /** + * Returns the ScanAndScroll Iterator. * * @see Elastica\ScanAndScroll + * * @param string $expiryTime - * @param int $sizePerShard + * @param int $sizePerShard + * * @return ScanAndScroll */ - public function scanAndScroll($expiryTime = '1m', $sizePerShard = 1000) { + public function scanAndScroll($expiryTime = '1m', $sizePerShard = 1000) + { return new ScanAndScroll($this, $expiryTime, $sizePerShard); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/SearchableInterface.php b/vendor/ruflin/elastica/lib/Elastica/SearchableInterface.php index 372bcb11..abfacb85 100644 --- a/vendor/ruflin/elastica/lib/Elastica/SearchableInterface.php +++ b/vendor/ruflin/elastica/lib/Elastica/SearchableInterface.php @@ -1,18 +1,15 @@ <?php - namespace Elastica; /** - * Elastica searchable interface + * Elastica searchable interface. * - * @category Xodoa - * @package Elastica * @author Thibault Duplessis <thibault.duplessis@gmail.com> */ interface SearchableInterface { /** - * Searches results for a query + * Searches results for a query. * * TODO: Improve sample code * { @@ -28,24 +25,27 @@ interface SearchableInterface * } * } * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return \Elastica\ResultSet ResultSet with all results inside + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return \Elastica\ResultSet ResultSet with all results inside */ public function search($query = '', $options = null); /** - * Counts results for a query + * Counts results for a query. * * If no query is set, matchall query is created * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return int number of documents matching the query + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return int number of documents matching the query */ public function count($query = ''); /** * @param \Elastica\Query $query - * @param array $options + * @param array $options + * * @return \Elastica\Search */ public function createSearch($query = '', $options = null); diff --git a/vendor/ruflin/elastica/lib/Elastica/Snapshot.php b/vendor/ruflin/elastica/lib/Elastica/Snapshot.php index 4b32172c..80924b79 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Snapshot.php +++ b/vendor/ruflin/elastica/lib/Elastica/Snapshot.php @@ -1,14 +1,13 @@ <?php - namespace Elastica; use Elastica\Exception\NotFoundException; use Elastica\Exception\ResponseException; /** - * Class Snapshot - * @package Elastica - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html + * Class Snapshot. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html */ class Snapshot { @@ -26,26 +25,32 @@ class Snapshot } /** - * Register a snapshot repository - * @param string $name the name of the repository - * @param string $type the repository type ("fs" for file system) - * @param array $settings Additional repository settings. If type "fs" is used, the "location" setting must be provided. + * Register a snapshot repository. + * + * @param string $name the name of the repository + * @param string $type the repository type ("fs" for file system) + * @param array $settings Additional repository settings. If type "fs" is used, the "location" setting must be provided. + * * @return Response */ public function registerRepository($name, $type, $settings = array()) { $data = array( 'type' => $type, - 'settings' => $settings + 'settings' => $settings, ); + return $this->request($name, Request::PUT, $data); } /** - * Retrieve a repository record by name + * Retrieve a repository record by name. + * * @param string $name the name of the desired repository + * * @throws Exception\ResponseException * @throws Exception\NotFoundException + * * @return array */ public function getRepository($name) @@ -54,102 +59,118 @@ class Snapshot $response = $this->request($name); } catch (ResponseException $e) { if ($e->getResponse()->getStatus() == 404) { - throw new NotFoundException("Repository '" . $name . "' does not exist."); + throw new NotFoundException("Repository '".$name."' does not exist."); } throw $e; } $data = $response->getData(); + return $data[$name]; } /** - * Retrieve all repository records + * Retrieve all repository records. + * * @return array */ public function getAllRepositories() { - return $this->request("_all")->getData(); + return $this->request('_all')->getData(); } /** - * Create a new snapshot - * @param string $repository the name of the repository in which this snapshot should be stored - * @param string $name the name of this snapshot - * @param array $options optional settings for this snapshot - * @param bool $waitForCompletion if true, the request will not return until the snapshot operation is complete + * Create a new snapshot. + * + * @param string $repository the name of the repository in which this snapshot should be stored + * @param string $name the name of this snapshot + * @param array $options optional settings for this snapshot + * @param bool $waitForCompletion if true, the request will not return until the snapshot operation is complete + * * @return Response */ public function createSnapshot($repository, $name, $options = array(), $waitForCompletion = false) { - return $this->request($repository . '/' . $name, Request::PUT, $options, array('wait_for_completion' => $waitForCompletion)); + return $this->request($repository.'/'.$name, Request::PUT, $options, array('wait_for_completion' => $waitForCompletion)); } /** - * Retrieve data regarding a specific snapshot + * Retrieve data regarding a specific snapshot. + * * @param string $repository the name of the repository from which to retrieve the snapshot - * @param string $name the name of the desired snapshot + * @param string $name the name of the desired snapshot + * * @throws Exception\ResponseException * @throws Exception\NotFoundException + * * @return array */ public function getSnapshot($repository, $name) { try { - $response = $this->request($repository . "/" . $name); + $response = $this->request($repository.'/'.$name); } catch (ResponseException $e) { if ($e->getResponse()->getStatus() == 404) { - throw new NotFoundException("Snapshot '" . $name . "' does not exist in repository '" . $repository . "'."); + throw new NotFoundException("Snapshot '".$name."' does not exist in repository '".$repository."'."); } throw $e; } $data = $response->getData(); + return $data['snapshots'][0]; } /** - * Retrieve data regarding all snapshots in the given repository + * Retrieve data regarding all snapshots in the given repository. + * * @param string $repository the repository name + * * @return array */ public function getAllSnapshots($repository) { - return $this->request($repository . "/_all")->getData(); + return $this->request($repository.'/_all')->getData(); } /** - * Delete a snapshot + * Delete a snapshot. + * * @param string $repository the repository in which the snapshot resides - * @param string $name the name of the snapshot to be deleted + * @param string $name the name of the snapshot to be deleted + * * @return Response */ public function deleteSnapshot($repository, $name) { - return $this->request($repository . "/" . $name, Request::DELETE); + return $this->request($repository.'/'.$name, Request::DELETE); } /** - * Restore a snapshot - * @param string $repository the name of the repository - * @param string $name the name of the snapshot - * @param array $options options for the restore operation - * @param bool $waitForCompletion if true, the request will not return until the restore operation is complete + * Restore a snapshot. + * + * @param string $repository the name of the repository + * @param string $name the name of the snapshot + * @param array $options options for the restore operation + * @param bool $waitForCompletion if true, the request will not return until the restore operation is complete + * * @return Response */ public function restoreSnapshot($repository, $name, $options = array(), $waitForCompletion = false) { - return $this->request($repository . "/" . $name . "/_restore", Request::POST, $options, array("wait_for_completion" => $waitForCompletion)); + return $this->request($repository.'/'.$name.'/_restore', Request::POST, $options, array('wait_for_completion' => $waitForCompletion)); } /** - * Perform a snapshot request - * @param string $path the URL + * Perform a snapshot request. + * + * @param string $path the URL * @param string $method the HTTP method - * @param array $data request body data - * @param array $query query string parameters + * @param array $data request body data + * @param array $query query string parameters + * * @return Response */ public function request($path, $method = Request::GET, $data = array(), array $query = array()) { - return $this->_client->request("/_snapshot/" . $path, $method, $data, $query); + return $this->_client->request('/_snapshot/'.$path, $method, $data, $query); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Status.php b/vendor/ruflin/elastica/lib/Elastica/Status.php index a747b9a5..c22a5f61 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Status.php +++ b/vendor/ruflin/elastica/lib/Elastica/Status.php @@ -1,42 +1,41 @@ <?php - namespace Elastica; + use Elastica\Exception\ResponseException; use Elastica\Index\Status as IndexStatus; /** - * Elastica general status + * Elastica general status. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/api/admin-indices-status.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html */ class Status { /** - * Contains all status infos + * Contains all status infos. * * @var \Elastica\Response Response object */ protected $_response = null; /** - * Data + * Data. * * @var array Data */ protected $_data = array(); /** - * Client object + * Client object. * * @var \Elastica\Client Client object */ protected $_client = null; /** - * Constructs Status object + * Constructs Status object. * * @param \Elastica\Client $client Client object */ @@ -47,7 +46,7 @@ class Status } /** - * Returns status data + * Returns status data. * * @return array Status data */ @@ -57,7 +56,7 @@ class Status } /** - * Returns status objects of all indices + * Returns status objects of all indices. * * @return array|\Elastica\Index\Status[] List of Elastica\Client\Index objects */ @@ -73,25 +72,21 @@ class Status } /** - * Returns a list of the existing index names + * Returns a list of the existing index names. * * @return array Index names list */ public function getIndexNames() { - $names = array(); - foreach ($this->_data['indices'] as $name => $data) { - $names[] = $name; - } - - return $names; + return array_keys($this->_data['indices']); } /** - * Checks if the given index exists + * Checks if the given index exists. * - * @param string $name Index name to check - * @return bool True if index exists + * @param string $name Index name to check + * + * @return bool True if index exists */ public function indexExists($name) { @@ -99,10 +94,11 @@ class Status } /** - * Checks if the given alias exists + * Checks if the given alias exists. + * + * @param string $name Alias name * - * @param string $name Alias name - * @return bool True if alias exists + * @return bool True if alias exists */ public function aliasExists($name) { @@ -110,16 +106,17 @@ class Status } /** - * Returns an array with all indices that the given alias name points to + * Returns an array with all indices that the given alias name points to. + * + * @param string $alias Alias name * - * @param string $alias Alias name * @return array|\Elastica\Index[] List of Elastica\Index */ public function getIndicesWithAlias($alias) { $response = null; try { - $response = $this->_client->request('/_alias/' . $alias); + $response = $this->_client->request('/_alias/'.$alias); } catch (ResponseException $e) { $transferInfo = $e->getResponse()->getTransferInfo(); // 404 means the index alias doesn't exist which means no indexes have it. @@ -133,11 +130,12 @@ class Status foreach ($response->getData() as $name => $unused) { $indices[] = new Index($this->_client, $name); } + return $indices; } /** - * Returns response object + * Returns response object. * * @return \Elastica\Response Response object */ @@ -147,7 +145,7 @@ class Status } /** - * Return shards info + * Return shards info. * * @return array Shards info */ @@ -157,7 +155,7 @@ class Status } /** - * Refresh status object + * Refresh status object. */ public function refresh() { @@ -167,7 +165,7 @@ class Status } /** - * Refresh serverStatus object + * Refresh serverStatus object. */ public function getServerStatus() { diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest.php b/vendor/ruflin/elastica/lib/Elastica/Suggest.php index dd5dbbcc..73b1ea36 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest.php @@ -1,43 +1,44 @@ <?php - namespace Elastica; - use Elastica\Exception\NotImplementedException; use Elastica\Suggest\AbstractSuggest; /** - * Class Suggest - * @package Elastica\Suggest - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters.html + * Class Suggest. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html */ class Suggest extends Param { /** * @param AbstractSuggest $suggestion */ - function __construct(AbstractSuggest $suggestion = NULL) + public function __construct(AbstractSuggest $suggestion = null) { if (!is_null($suggestion)) { $this->addSuggestion($suggestion); } } - /** - * Set the global text for this suggester + * Set the global text for this suggester. + * * @param string $text - * @return \Elastica\Suggest + * + * @return $this */ public function setGlobalText($text) { - return $this->setParam("text", $text); + return $this->setParam('text', $text); } /** - * Add a suggestion to this suggest clause + * Add a suggestion to this suggest clause. + * * @param AbstractSuggest $suggestion - * @return \Elastica\Suggest + * + * @return $this */ public function addSuggestion(AbstractSuggest $suggestion) { @@ -46,17 +47,19 @@ class Suggest extends Param /** * @param Suggest|AbstractSuggest $suggestion - * @return \Elastica\Suggest + * * @throws Exception\NotImplementedException + * + * @return self */ public static function create($suggestion) { - switch(true){ - case $suggestion instanceof Suggest: + switch (true) { + case $suggestion instanceof self: return $suggestion; case $suggestion instanceof AbstractSuggest: return new self($suggestion); } throw new NotImplementedException(); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/AbstractSuggest.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/AbstractSuggest.php index e5f5e01c..00f21e44 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest/AbstractSuggest.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/AbstractSuggest.php @@ -1,13 +1,10 @@ <?php - namespace Elastica\Suggest; - use Elastica\Param; /** - * Class AbstractSuggestion - * @package Elastica\Suggest + * Class AbstractSuggestion. */ abstract class AbstractSuggest extends Param { @@ -32,45 +29,52 @@ abstract class AbstractSuggest extends Param } /** - * Suggest text must be set either globally or per suggestion + * Suggest text must be set either globally or per suggestion. + * * @param string $text - * @return \Elastica\Suggest\AbstractSuggest + * + * @return $this */ public function setText($text) { $this->_text = $text; + return $this; } /** * @param string $field - * @return \Elastica\Suggest\AbstractSuggest + * + * @return $this */ public function setField($field) { - return $this->setParam("field", $field); + return $this->setParam('field', $field); } /** * @param int $size - * @return \Elastica\Suggest\AbstractSuggest + * + * @return $this */ public function setSize($size) { - return $this->setParam("size", $size); + return $this->setParam('size', $size); } /** * @param int $size maximum number of suggestions to be retrieved from each shard - * @return \Elastica\Suggest\AbstractSuggest + * + * @return $this */ public function setShardSize($size) { - return $this->setParam("shard_size", $size); + return $this->setParam('shard_size', $size); } /** - * Retrieve the name of this suggestion + * Retrieve the name of this suggestion. + * * @return string */ public function getName() @@ -87,6 +91,7 @@ abstract class AbstractSuggest extends Param if (isset($this->_text)) { $array['text'] = $this->_text; } + return $array; } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/AbstractCandidateGenerator.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/AbstractCandidateGenerator.php index d9e6ac7c..6fba49db 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/AbstractCandidateGenerator.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/AbstractCandidateGenerator.php @@ -1,11 +1,8 @@ <?php - namespace Elastica\Suggest\CandidateGenerator; - use Elastica\Param; class AbstractCandidateGenerator extends Param { - -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/DirectGenerator.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/DirectGenerator.php index 0277a5ac..54ac7649 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/DirectGenerator.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/CandidateGenerator/DirectGenerator.php @@ -1,12 +1,10 @@ <?php - namespace Elastica\Suggest\CandidateGenerator; - /** - * Class DirectGenerator - * @package Elastica\Suggest\Phrase - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html#_direct_generators + * Class DirectGenerator. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html#_direct_generators */ class DirectGenerator extends AbstractCandidateGenerator { @@ -23,105 +21,120 @@ class DirectGenerator extends AbstractCandidateGenerator } /** - * Set the field name from which to fetch candidate suggestions + * Set the field name from which to fetch candidate suggestions. + * * @param string $field - * @return DirectGenerator + * + * @return $this */ public function setField($field) { - return $this->setParam("field", $field); + return $this->setParam('field', $field); } /** - * Set the maximum corrections to be returned per suggest text token + * Set the maximum corrections to be returned per suggest text token. + * * @param int $size - * @return DirectGenerator + * + * @return $this */ public function setSize($size) { - return $this->setParam("size", $size); + return $this->setParam('size', $size); } /** * @param string $mode see SUGGEST_MODE_* constants for options - * @return DirectGenerator + * + * @return $this */ public function setSuggestMode($mode) { - return $this->setParam("suggest_mode", $mode); + return $this->setParam('suggest_mode', $mode); } /** * @param int $max can only be a value between 1 and 2. Defaults to 2. - * @return DirectGenerator + * + * @return $this */ public function setMaxEdits($max) { - return $this->setParam("max_edits", $max); + return $this->setParam('max_edits', $max); } /** * @param int $length defaults to 1 - * @return DirectGenerator + * + * @return $this */ public function setPrefixLength($length) { - return $this->setParam("prefix_len", $length); + return $this->setParam('prefix_len', $length); } /** * @param int $min defaults to 4 - * @return DirectGenerator + * + * @return $this */ public function setMinWordLength($min) { - return $this->setParam("min_word_len", $min); + return $this->setParam('min_word_len', $min); } /** * @param int $max - * @return DirectGenerator + * + * @return $this */ public function setMaxInspections($max) { - return $this->setParam("max_inspections", $max); + return $this->setParam('max_inspections', $max); } /** * @param float $min - * @return DirectGenerator + * + * @return $this */ public function setMinDocFrequency($min) { - return $this->setParam("min_doc_freq", $min); + return $this->setParam('min_doc_freq', $min); } /** * @param float $max - * @return DirectGenerator + * + * @return $this */ public function setMaxTermFrequency($max) { - return $this->setParam("max_term_freq", $max); + return $this->setParam('max_term_freq', $max); } /** - * Set an analyzer to be applied to the original token prior to candidate generation + * Set an analyzer to be applied to the original token prior to candidate generation. + * * @param string $pre an analyzer - * @return DirectGenerator + * + * @return $this */ public function setPreFilter($pre) { - return $this->setParam("pre_filter", $pre); + return $this->setParam('pre_filter', $pre); } /** - * Set an analyzer to be applied to generated tokens before they are passed to the phrase scorer + * Set an analyzer to be applied to generated tokens before they are passed to the phrase scorer. + * * @param string $post - * @return DirectGenerator + * + * @return $this */ public function setPostFilter($post) { - return $this->setParam("post_filter", $post); + return $this->setParam('post_filter', $post); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/Completion.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/Completion.php new file mode 100644 index 00000000..0f0b3e61 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/Completion.php @@ -0,0 +1,26 @@ +<?php +namespace Elastica\Suggest; + +/** + * Comletion suggester. + * + * @author Igor Denisenko <im.denisenko@yahoo.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html + */ +class Completion extends AbstractSuggest +{ + /** + * Set fuzzy parameter. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html#fuzzy + * + * @param array $fuzzy + * + * @return $this + */ + public function setFuzzy(array $fuzzy) + { + return $this->setParam('fuzzy', $fuzzy); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/Phrase.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/Phrase.php index 14630dc1..544f3678 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest/Phrase.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/Phrase.php @@ -1,109 +1,121 @@ <?php - namespace Elastica\Suggest; use Elastica\Suggest\CandidateGenerator\AbstractCandidateGenerator; - /** - * Class Phrase - * @package Elastica\Suggest - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html + * Class Phrase. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html */ class Phrase extends AbstractSuggest { /** * @param string $analyzer - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setAnalyzer($analyzer) { - return $this->setParam("analyzer", $analyzer); + return $this->setParam('analyzer', $analyzer); } /** - * Set the max size of the n-grams (shingles) in the field + * Set the max size of the n-grams (shingles) in the field. + * * @param int $size - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setGramSize($size) { - return $this->setParam("gram_size", $size); + return $this->setParam('gram_size', $size); } /** - * Set the likelihood of a term being misspelled even if the term exists in the dictionary + * Set the likelihood of a term being misspelled even if the term exists in the dictionary. + * * @param float $likelihood Defaults to 0.95, meaning 5% of the words are misspelled. - * @return \Elastica\Suggest\Phrase + * + * @return $this */ - public function setRealWorldErrorLikelihood($likelihood) + public function setRealWordErrorLikelihood($likelihood) { - return $this->setParam("real_world_error_likelihood", $likelihood); + return $this->setParam('real_word_error_likelihood', $likelihood); } /** * Set the factor applied to the input phrases score to be used as a threshold for other suggestion candidates. * Only candidates which score higher than this threshold will be included in the result. + * * @param float $confidence Defaults to 1.0. - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setConfidence($confidence) { - return $this->setParam("confidence", $confidence); + return $this->setParam('confidence', $confidence); } /** - * Set the maximum percentage of the terms considered to be misspellings in order to form a correction + * Set the maximum percentage of the terms considered to be misspellings in order to form a correction. + * * @param float $max - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setMaxErrors($max) { - return $this->setParam("max_errors", $max); + return $this->setParam('max_errors', $max); } /** * @param string $separator - * @return \Elastica\Param + * + * @return $this */ public function setSeparator($separator) { - return $this->setParam("separator", $separator); + return $this->setParam('separator', $separator); } /** - * Set suggestion highlighting + * Set suggestion highlighting. + * * @param string $preTag * @param string $postTag - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setHighlight($preTag, $postTag) { - return $this->setParam("highlight", array( + return $this->setParam('highlight', array( 'pre_tag' => $preTag, - 'post_tag' => $postTag + 'post_tag' => $postTag, )); } /** * @param float $discount - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setStupidBackoffSmoothing($discount = 0.4) { - return $this->setSmoothingModel("stupid_backoff", array( - "discount" => $discount + return $this->setSmoothingModel('stupid_backoff', array( + 'discount' => $discount, )); } /** * @param float $alpha - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setLaplaceSmoothing($alpha = 0.5) { - return $this->setSmoothingModel("laplace", array( - "alpha" => $alpha + return $this->setSmoothingModel('laplace', array( + 'alpha' => $alpha, )); } @@ -111,38 +123,42 @@ class Phrase extends AbstractSuggest * @param float $trigramLambda * @param float $bigramLambda * @param float $unigramLambda - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function setLinearInterpolationSmoothing($trigramLambda, $bigramLambda, $unigramLambda) { - return $this->setSmoothingModel("linear_interpolation", array( - "trigram_lambda" => $trigramLambda, - "bigram_lambda" => $bigramLambda, - "unigram_lambda" => $unigramLambda + return $this->setSmoothingModel('linear_interpolation', array( + 'trigram_lambda' => $trigramLambda, + 'bigram_lambda' => $bigramLambda, + 'unigram_lambda' => $unigramLambda, )); } /** - * @param string $model the name of the smoothing model - * @param array $params - * @return \Elastica\Suggest\Phrase + * @param string $model the name of the smoothing model + * @param array $params + * + * @return $this */ public function setSmoothingModel($model, array $params) { - return $this->setParam("smoothing", array( - $model => $params + return $this->setParam('smoothing', array( + $model => $params, )); } /** * @param AbstractCandidateGenerator $generator - * @return \Elastica\Suggest\Phrase + * + * @return $this */ public function addCandidateGenerator(AbstractCandidateGenerator $generator) { $generator = $generator->toArray(); $keys = array_keys($generator); $values = array_values($generator); + return $this->addParam($keys[0], $values[0]); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Suggest/Term.php b/vendor/ruflin/elastica/lib/Elastica/Suggest/Term.php index 3fca1731..9f082873 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Suggest/Term.php +++ b/vendor/ruflin/elastica/lib/Elastica/Suggest/Term.php @@ -1,12 +1,10 @@ <?php - namespace Elastica\Suggest; - /** - * Class Term - * @package Elastica\Suggest - * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-term.html + * Class Term. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html */ class Term extends AbstractSuggest { @@ -19,97 +17,113 @@ class Term extends AbstractSuggest /** * @param string $analyzer - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setAnalyzer($analyzer) { - return $this->setParam("analyzer", $analyzer); + return $this->setParam('analyzer', $analyzer); } /** * @param string $sort see SORT_* constants for options - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setSort($sort) { - return $this->setParam("sort", $sort); + return $this->setParam('sort', $sort); } /** * @param string $mode see SUGGEST_MODE_* constants for options - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setSuggestMode($mode) { - return $this->setParam("suggest_mode", $mode); + return $this->setParam('suggest_mode', $mode); } /** - * If true, suggest terms will be lower cased after text analysis + * If true, suggest terms will be lower cased after text analysis. + * * @param bool $lowercase - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setLowercaseTerms($lowercase = true) { - return $this->setParam("lowercase_terms", (bool)$lowercase); + return $this->setParam('lowercase_terms', (bool) $lowercase); } /** - * Set the maximum edit distance candidate suggestions can have in order to be considered as a suggestion + * Set the maximum edit distance candidate suggestions can have in order to be considered as a suggestion. + * * @param int $max Either 1 or 2. Any other value will result in an error. - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setMaxEdits($max) { - return $this->setParam("max_edits", (int)$max); + return $this->setParam('max_edits', (int) $max); } /** - * The number of minimum prefix characters that must match in order to be a suggestion candidate + * The number of minimum prefix characters that must match in order to be a suggestion candidate. + * * @param int $length Defaults to 1. - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setPrefixLength($length) { - return $this->setParam("prefix_len", (int)$length); + return $this->setParam('prefix_len', (int) $length); } /** * The minimum length a suggest text term must have in order to be included. + * * @param int $length Defaults to 4. - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setMinWordLength($length) { - return $this->setParam("min_word_len", (int)$length); + return $this->setParam('min_word_len', (int) $length); } /** * @param int $max Defaults to 5. - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setMaxInspections($max) { - return $this->setParam("max_inspections", $max); + return $this->setParam('max_inspections', $max); } /** - * Set the minimum number of documents in which a suggestion should appear + * Set the minimum number of documents in which a suggestion should appear. + * * @param int|float $min Defaults to 0. If the value is greater than 1, it must be a whole number. - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setMinDocFrequency($min) { - return $this->setParam("min_doc_freq", $min); + return $this->setParam('min_doc_freq', $min); } /** - * Set the maximum number of documents in which a suggest text token can exist in order to be included + * Set the maximum number of documents in which a suggest text token can exist in order to be included. + * * @param float $max - * @return \Elastica\Suggest\Term + * + * @return $this */ public function setMaxTermFrequency($max) { - return $this->setParam("max_term_freq", $max); + return $this->setParam('max_term_freq', $max); } -}
\ No newline at end of file +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Tool/CrossIndex.php b/vendor/ruflin/elastica/lib/Elastica/Tool/CrossIndex.php new file mode 100644 index 00000000..89fc0532 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Tool/CrossIndex.php @@ -0,0 +1,160 @@ +<?php +namespace Elastica\Tool; + +use Elastica\Bulk; +use Elastica\Index; +use Elastica\Query\MatchAll; +use Elastica\ScanAndScroll; +use Elastica\Search; +use Elastica\Type; + +/** + * Functions to move documents and types between indices. + * + * @author Manuel Andreo Garcia <andreo.garcia@gmail.com> + */ +class CrossIndex +{ + /** + * Type option. + * + * type: string | string[] | \Elastica\Type | \Elastica\Type[] | null + * default: null (means all types) + */ + const OPTION_TYPE = 'type'; + + /** + * Query option. + * + * type: see \Elastica\Query::create() + * default: Elastica\Query\MatchAll + */ + const OPTION_QUERY = 'query'; + + /** + * Expiry time option. + * + * type: string (see Elastica\ScanAndScroll) + * default: '1m' + */ + const OPTION_EXPIRY_TIME = 'expiryTime'; + + /** + * Size per shard option. + * + * type: int (see Elastica\ScanAndScroll) + * default: 1000 + */ + const OPTION_SIZE_PER_SHARD = 'sizePerShard'; + + /** + * Reindex documents from an old index to a new index. + * + * @link https://www.elastic.co/guide/en/elasticsearch/guide/master/reindex.html + * + * @param \Elastica\Index $oldIndex + * @param \Elastica\Index $newIndex + * @param array $options keys: CrossIndex::OPTION_* constants + * + * @return \Elastica\Index The new index object + */ + public static function reindex( + Index $oldIndex, + Index $newIndex, + array $options = array() + ) { + // prepare search + $search = new Search($oldIndex->getClient()); + + $options = array_merge( + array( + self::OPTION_TYPE => null, + self::OPTION_QUERY => new MatchAll(), + self::OPTION_EXPIRY_TIME => '1m', + self::OPTION_SIZE_PER_SHARD => 1000, + ), + $options + ); + + $search->addIndex($oldIndex); + if (isset($options[self::OPTION_TYPE])) { + $type = $options[self::OPTION_TYPE]; + $search->addTypes(is_array($type) ? $type : array($type)); + } + $search->setQuery($options[self::OPTION_QUERY]); + + // search on old index and bulk insert in new index + $scanAndScroll = new ScanAndScroll( + $search, + $options[self::OPTION_EXPIRY_TIME], + $options[self::OPTION_SIZE_PER_SHARD] + ); + foreach ($scanAndScroll as $resultSet) { + $bulk = new Bulk($newIndex->getClient()); + $bulk->setIndex($newIndex); + + foreach ($resultSet as $result) { + $action = new Bulk\Action(); + $action->setType($result->getType()); + $action->setId($result->getId()); + $action->setSource($result->getData()); + + $bulk->addAction($action); + } + + $bulk->send(); + } + + $newIndex->refresh(); + + return $newIndex; + } + + /** + * Copies type mappings and documents from an old index to a new index. + * + * @see \Elastica\Tool\CrossIndex::reindex() + * + * @param \Elastica\Index $oldIndex + * @param \Elastica\Index $newIndex + * @param array $options keys: CrossIndex::OPTION_* constants + * + * @return \Elastica\Index The new index object + */ + public static function copy( + Index $oldIndex, + Index $newIndex, + array $options = array() + ) { + // normalize types to array of string + $types = array(); + if (isset($options[self::OPTION_TYPE])) { + $types = $options[self::OPTION_TYPE]; + $types = is_array($types) ? $types : array($types); + + $types = array_map( + function ($type) { + if ($type instanceof Type) { + $type = $type->getName(); + } + + return (string) $type; + }, + $types + ); + } + + // copy mapping + foreach ($oldIndex->getMapping() as $type => $mapping) { + if (!empty($types) && !in_array($type, $types, true)) { + continue; + } + + $type = new Type($newIndex, $type); + $type->setMapping($mapping['properties']); + } + + // copy documents + return self::reindex($oldIndex, $newIndex, $options); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/AbstractTransport.php b/vendor/ruflin/elastica/lib/Elastica/Transport/AbstractTransport.php index d2ce0fb2..c40b5107 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/AbstractTransport.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/AbstractTransport.php @@ -1,17 +1,14 @@ <?php - namespace Elastica\Transport; use Elastica\Connection; -use Elastica\Request; use Elastica\Exception\InvalidException; use Elastica\Param; +use Elastica\Request; /** - * Elastica Abstract Transport object + * Elastica Abstract Transport object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ abstract class AbstractTransport extends Param @@ -22,7 +19,7 @@ abstract class AbstractTransport extends Param protected $_connection; /** - * Construct transport + * Construct transport. * * @param \Elastica\Connection $connection Connection object */ @@ -43,23 +40,28 @@ abstract class AbstractTransport extends Param /** * @param \Elastica\Connection $connection Connection object + * + * @return $this */ public function setConnection(Connection $connection) { $this->_connection = $connection; + + return $this; } /** - * Executes the transport request + * Executes the transport request. + * + * @param \Elastica\Request $request Request object + * @param array $params Hostname, port, path, ... * - * @param \Elastica\Request $request Request object - * @param array $params Hostname, port, path, ... * @return \Elastica\Response Response object */ abstract public function exec(Request $request, array $params); /** - * Create a transport + * Create a transport. * * The $transport parameter can be one of the following values: * @@ -68,10 +70,12 @@ abstract class AbstractTransport extends Param * * array: An array with a "type" key which must be set to one of the two options. All other * keys in the array will be set as parameters in the transport instance * - * @param mixed $transport A transport definition + * @param mixed $transport A transport definition * @param \Elastica\Connection $connection A connection instance - * @param array $params Parameters for the transport class + * @param array $params Parameters for the transport class + * * @throws \Elastica\Exception\InvalidException + * * @return AbstractTransport */ public static function create($transport, Connection $connection, array $params = array()) @@ -85,16 +89,16 @@ abstract class AbstractTransport extends Param } if (is_string($transport)) { - $className = 'Elastica\\Transport\\' . $transport; + $className = 'Elastica\\Transport\\'.$transport; if (!class_exists($className)) { throw new InvalidException('Invalid transport'); } - $transport = new $className; + $transport = new $className(); } - if ($transport instanceof AbstractTransport) { + if ($transport instanceof self) { $transport->setConnection($connection); foreach ($params as $key => $value) { diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Guzzle.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Guzzle.php index 96ad8971..5c98d83b 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Guzzle.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Guzzle.php @@ -1,133 +1,132 @@ <?php - namespace Elastica\Transport; -use Elastica\Exception\Connection\HttpException; +use Elastica\Connection; use Elastica\Exception\Connection\GuzzleException; use Elastica\Exception\PartialShardFailureException; use Elastica\Exception\ResponseException; -use Elastica\Exception\InvalidException; -use Elastica\Connection; +use Elastica\JSON; use Elastica\Request; use Elastica\Response; -use Elastica\JSON; use GuzzleHttp\Client; use GuzzleHttp\Exception\TransferException; -use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Stream\Stream; /** - * Elastica Guzzle Transport object + * Elastica Guzzle Transport object. * - * @package Elastica * @author Milan Magudia <milan@magudia.com> */ class Guzzle extends AbstractTransport { /** - * Http scheme + * Http scheme. * * @var string Http scheme */ protected $_scheme = 'http'; /** - * Curl resource to reuse + * Curl resource to reuse. * * @var resource Guzzle resource to reuse */ protected static $_guzzleClientConnection = null; /** - * Makes calls to the elasticsearch server + * Makes calls to the elasticsearch server. * * All calls that are made to the server are done through this function * - * @param \Elastica\Request $request - * @param array $params Host, Port, ... + * @param \Elastica\Request $request + * @param array $params Host, Port, ... + * * @throws \Elastica\Exception\ConnectionException * @throws \Elastica\Exception\ResponseException * @throws \Elastica\Exception\Connection\HttpException - * @return \Elastica\Response Response object + * + * @return \Elastica\Response Response object */ public function exec(Request $request, array $params) { $connection = $this->getConnection(); - try { - $client = $this->_getGuzzleClient($this->_getBaseUrl($connection), $connection->isPersistent()); + $client = $this->_getGuzzleClient($this->_getBaseUrl($connection), $connection->isPersistent()); - $options = array(); - if ($connection->getTimeout()) { - $options['timeout'] = $connection->getTimeout(); - } + $options = array( + 'exceptions' => false, // 4xx and 5xx is expected and NOT an exceptions in this context + ); + if ($connection->getTimeout()) { + $options['timeout'] = $connection->getTimeout(); + } - if ($connection->getProxy()) { - $options['proxy'] = $connection->getProxy(); - } + $proxy = $connection->getProxy(); - $req = $client->createRequest($request->getMethod(), $this->_getActionPath($request), $options); - $req->setHeaders($connection->hasConfig('headers') ?: array()); + // See: https://github.com/facebook/hhvm/issues/4875 + if (is_null($proxy) && defined('HHVM_VERSION')) { + $proxy = getenv('http_proxy') ?: null; + } + + if (!is_null($proxy)) { + $options['proxy'] = $proxy; + } - $data = $request->getData(); - if (!empty($data) || '0' === $data) { + $req = $client->createRequest($request->getMethod(), $this->_getActionPath($request), $options); + $req->setHeaders($connection->hasConfig('headers') ? $connection->getConfig('headers') : array()); - if ($req->getMethod() == Request::GET) { - $req->setMethod(Request::POST); - } + $data = $request->getData(); + if (!empty($data) || '0' === $data) { + if ($req->getMethod() == Request::GET) { + $req->setMethod(Request::POST); + } - if ($this->hasParam('postWithRequestBody') && $this->getParam('postWithRequestBody') == true) { - $request->setMethod(Request::POST); - $req->setMethod(Request::POST); - } + if ($this->hasParam('postWithRequestBody') && $this->getParam('postWithRequestBody') == true) { + $request->setMethod(Request::POST); + $req->setMethod(Request::POST); + } - if (is_array($data)) { - $content = JSON::stringify($data, 'JSON_ELASTICSEARCH'); - } else { - $content = $data; - } - $req->setBody(Stream::factory($content)); + if (is_array($data)) { + $content = JSON::stringify($data, 'JSON_ELASTICSEARCH'); + } else { + $content = $data; } + $req->setBody(Stream::factory($content)); + } + try { $start = microtime(true); $res = $client->send($req); $end = microtime(true); + } catch (TransferException $ex) { + throw new GuzzleException($ex, $request, new Response($ex->getMessage())); + } - $response = new Response((string)$res->getBody(), $res->getStatusCode()); - - if (defined('DEBUG') && DEBUG) { - $response->setQueryTime($end - $start); - } - - $response->setTransferInfo( - array( - 'request_header' => $request->getMethod(), - 'http_code' => $res->getStatusCode() - ) - ); - - if ($response->hasError()) { - throw new ResponseException($request, $response); - } + $response = new Response((string) $res->getBody(), $res->getStatusCode()); + $response->setQueryTime($end - $start); - if ($response->hasFailedShards()) { - throw new PartialShardFailureException($request, $response); - } + $response->setTransferInfo( + array( + 'request_header' => $request->getMethod(), + 'http_code' => $res->getStatusCode(), + ) + ); - return $response; + if ($response->hasError()) { + throw new ResponseException($request, $response); + } - } catch (ClientException $e) { - // ignore 4xx errors - } catch (TransferException $e) { - throw new GuzzleException($e, $request, new Response($e->getMessage())); + if ($response->hasFailedShards()) { + throw new PartialShardFailureException($request, $response); } + return $response; } /** - * Return Guzzle resource + * Return Guzzle resource. + * + * @param bool $persistent False if not persistent connection * - * @param bool $persistent False if not persistent connection * @return resource Connection resource */ protected function _getGuzzleClient($baseUrl, $persistent = true) @@ -140,9 +139,9 @@ class Guzzle extends AbstractTransport } /** - * Builds the base url for the guzzle connection + * Builds the base url for the guzzle connection. * - * @param \Elastica\Connection $connection + * @param \Elastica\Connection $connection */ protected function _getBaseUrl(Connection $connection) { @@ -152,26 +151,27 @@ class Guzzle extends AbstractTransport if (!empty($url)) { $baseUri = $url; } else { - $baseUri = $this->_scheme . '://' . $connection->getHost() . ':' . $connection->getPort() . '/' . $connection->getPath(); + $baseUri = $this->_scheme.'://'.$connection->getHost().':'.$connection->getPort().'/'.$connection->getPath(); } + return rtrim($baseUri, '/'); } /** - * Builds the action path url for each request + * Builds the action path url for each request. * - * @param \Elastica\Request $request + * @param \Elastica\Request $request */ protected function _getActionPath(Request $request) { $action = $request->getPath(); if ($action) { - $action = '/'. ltrim($action, '/'); + $action = '/'.ltrim($action, '/'); } $query = $request->getQuery(); if (!empty($query)) { - $action .= '?' . http_build_query($query); + $action .= '?'.http_build_query($query); } return $action; diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php index 5606dbbc..1a33c0a6 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Transport; use Elastica\Exception\Connection\HttpException; @@ -10,39 +9,39 @@ use Elastica\Request; use Elastica\Response; /** - * Elastica Http Transport object + * Elastica Http Transport object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Http extends AbstractTransport { /** - * Http scheme + * Http scheme. * * @var string Http scheme */ protected $_scheme = 'http'; /** - * Curl resource to reuse + * Curl resource to reuse. * * @var resource Curl resource to reuse */ protected static $_curlConnection = null; /** - * Makes calls to the elasticsearch server + * Makes calls to the elasticsearch server. * * All calls that are made to the server are done through this function * - * @param \Elastica\Request $request - * @param array $params Host, Port, ... + * @param \Elastica\Request $request + * @param array $params Host, Port, ... + * * @throws \Elastica\Exception\ConnectionException * @throws \Elastica\Exception\ResponseException * @throws \Elastica\Exception\Connection\HttpException - * @return \Elastica\Response Response object + * + * @return \Elastica\Response Response object */ public function exec(Request $request, array $params) { @@ -56,7 +55,7 @@ class Http extends AbstractTransport if (!empty($url)) { $baseUri = $url; } else { - $baseUri = $this->_scheme . '://' . $connection->getHost() . ':' . $connection->getPort() . '/' . $connection->getPath(); + $baseUri = $this->_scheme.'://'.$connection->getHost().':'.$connection->getPort().'/'.$connection->getPath(); } $baseUri .= $request->getPath(); @@ -64,14 +63,26 @@ class Http extends AbstractTransport $query = $request->getQuery(); if (!empty($query)) { - $baseUri .= '?' . http_build_query($query); + $baseUri .= '?'.http_build_query($query); } curl_setopt($conn, CURLOPT_URL, $baseUri); curl_setopt($conn, CURLOPT_TIMEOUT, $connection->getTimeout()); curl_setopt($conn, CURLOPT_FORBID_REUSE, 0); + /* @see Connection::setConnectTimeout() */ + $connectTimeout = $connection->getConnectTimeout(); + if ($connectTimeout > 0) { + curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $connectTimeout); + } + $proxy = $connection->getProxy(); + + // See: https://github.com/facebook/hhvm/issues/4875 + if (is_null($proxy) && defined('HHVM_VERSION')) { + $proxy = getenv('http_proxy') ?: null; + } + if (!is_null($proxy)) { curl_setopt($conn, CURLOPT_PROXY, $proxy); } @@ -83,7 +94,7 @@ class Http extends AbstractTransport if (!empty($headersConfig)) { $headers = array(); while (list($header, $headerValue) = each($headersConfig)) { - array_push($headers, $header . ': ' . $headerValue); + array_push($headers, $header.': '.$headerValue); } curl_setopt($conn, CURLOPT_HTTPHEADER, $headers); @@ -116,11 +127,6 @@ class Http extends AbstractTransport curl_setopt($conn, CURLOPT_CUSTOMREQUEST, $httpMethod); - if (defined('DEBUG') && DEBUG) { - // Track request headers when in debug mode - curl_setopt($conn, CURLINFO_HEADER_OUT, true); - } - $start = microtime(true); // cURL opt returntransfer leaks memory, therefore OB instead. @@ -133,15 +139,10 @@ class Http extends AbstractTransport // Checks if error exists $errorNumber = curl_errno($conn); - $response = new Response($responseString, curl_getinfo($this->_getConnection(), CURLINFO_HTTP_CODE)); - - if (defined('DEBUG') && DEBUG) { - $response->setQueryTime($end - $start); - } - + $response = new Response($responseString, curl_getinfo($conn, CURLINFO_HTTP_CODE)); + $response->setQueryTime($end - $start); $response->setTransferInfo(curl_getinfo($conn)); - if ($response->hasError()) { throw new ResponseException($request, $response); } @@ -158,7 +159,7 @@ class Http extends AbstractTransport } /** - * Called to add additional curl params + * Called to add additional curl params. * * @param resource $curlConnection Curl connection */ @@ -172,9 +173,10 @@ class Http extends AbstractTransport } /** - * Return Curl resource + * Return Curl resource. + * + * @param bool $persistent False if not persistent connection * - * @param bool $persistent False if not persistent connection * @return resource Connection resource */ protected function _getConnection($persistent = true) diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/HttpAdapter.php b/vendor/ruflin/elastica/lib/Elastica/Transport/HttpAdapter.php new file mode 100644 index 00000000..efc27ab5 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/HttpAdapter.php @@ -0,0 +1,156 @@ +<?php +namespace Elastica\Transport; + +use Elastica\Connection; +use Elastica\Exception\PartialShardFailureException; +use Elastica\Exception\ResponseException; +use Elastica\JSON; +use Elastica\Request as ElasticaRequest; +use Elastica\Response as ElasticaResponse; +use Ivory\HttpAdapter\HttpAdapterInterface; +use Ivory\HttpAdapter\Message\Request as HttpAdapterRequest; +use Ivory\HttpAdapter\Message\Response as HttpAdapterResponse; +use Ivory\HttpAdapter\Message\Stream\StringStream; + +class HttpAdapter extends AbstractTransport +{ + /** + * @var HttpAdapterInterface + */ + private $httpAdapter; + + /** + * @var string + */ + private $_scheme = 'http'; + + /** + * Construct transport. + */ + public function __construct(Connection $connection = null, HttpAdapterInterface $httpAdapter) + { + parent::__construct($connection); + $this->httpAdapter = $httpAdapter; + } + + /** + * Makes calls to the elasticsearch server. + * + * All calls that are made to the server are done through this function + * + * @param \Elastica\Request $elasticaRequest + * @param array $params Host, Port, ... + * + * @throws \Elastica\Exception\ConnectionException + * @throws \Elastica\Exception\ResponseException + * @throws \Elastica\Exception\Connection\HttpException + * + * @return \Elastica\Response Response object + */ + public function exec(ElasticaRequest $elasticaRequest, array $params) + { + $connection = $this->getConnection(); + + if ($timeout = $connection->getTimeout()) { + $this->httpAdapter->getConfiguration()->setTimeout($timeout); + } + + $httpAdapterRequest = $this->_createHttpAdapterRequest($elasticaRequest, $connection); + + $start = microtime(true); + $httpAdapterResponse = $this->httpAdapter->sendRequest($httpAdapterRequest); + $end = microtime(true); + + $elasticaResponse = $this->_createElasticaResponse($httpAdapterResponse, $connection); + $elasticaResponse->setQueryTime($end - $start); + + $elasticaResponse->setTransferInfo( + array( + 'request_header' => $httpAdapterRequest->getMethod(), + 'http_code' => $httpAdapterResponse->getStatusCode(), + ) + ); + + if ($elasticaResponse->hasError()) { + throw new ResponseException($elasticaRequest, $elasticaResponse); + } + + if ($elasticaResponse->hasFailedShards()) { + throw new PartialShardFailureException($elasticaRequest, $elasticaResponse); + } + + return $elasticaResponse; + } + + /** + * @param HttpAdapterResponse $httpAdapterResponse + * + * @return ElasticaResponse + */ + protected function _createElasticaResponse(HttpAdapterResponse $httpAdapterResponse) + { + return new ElasticaResponse((string) $httpAdapterResponse->getBody(), $httpAdapterResponse->getStatusCode()); + } + + /** + * @param ElasticaRequest $elasticaRequest + * @param Connection $connection + * + * @return HttpAdapterRequest + */ + protected function _createHttpAdapterRequest(ElasticaRequest $elasticaRequest, Connection $connection) + { + $data = $elasticaRequest->getData(); + $body = null; + $method = $elasticaRequest->getMethod(); + $headers = $connection->hasConfig('headers') ?: array(); + if (!empty($data) || '0' === $data) { + if ($method == ElasticaRequest::GET) { + $method = ElasticaRequest::POST; + } + + if ($this->hasParam('postWithRequestBody') && $this->getParam('postWithRequestBody') == true) { + $elasticaRequest->setMethod(ElasticaRequest::POST); + $method = ElasticaRequest::POST; + } + + if (is_array($data)) { + $body = JSON::stringify($data, 'JSON_ELASTICSEARCH'); + } else { + $body = $data; + } + } + + $url = $this->_getUri($elasticaRequest, $connection); + $streamBody = new StringStream($body); + + return new HttpAdapterRequest($url, $method, HttpAdapterRequest::PROTOCOL_VERSION_1_1, $headers, $streamBody); + } + + /** + * @param ElasticaRequest $request + * @param \Elastica\Connection $connection + * + * @return string + */ + protected function _getUri(ElasticaRequest $request, Connection $connection) + { + $url = $connection->hasConfig('url') ? $connection->getConfig('url') : ''; + + if (!empty($url)) { + $baseUri = $url; + } else { + $baseUri = $this->_scheme.'://'.$connection->getHost().':'.$connection->getPort().'/'.$connection->getPath(); + } + + $baseUri .= $request->getPath(); + + $query = $request->getQuery(); + + if (!empty($query)) { + $baseUri .= '?'.http_build_query($query); + } + + return $baseUri; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Https.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Https.php index 64704039..b2b489dd 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Https.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Https.php @@ -1,25 +1,22 @@ <?php - namespace Elastica\Transport; /** - * Elastica Http Transport object + * Elastica Http Transport object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Https extends Http { /** - * Https scheme + * Https scheme. * * @var string https scheme */ protected $_scheme = 'https'; /** - * Overloads setupCurl to set SSL params + * Overloads setupCurl to set SSL params. * * @param resource $connection Curl connection resource */ diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Memcache.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Memcache.php index cf047b58..fb56cdf4 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Memcache.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Memcache.php @@ -1,7 +1,7 @@ <?php - namespace Elastica\Transport; +use Elastica\Exception\Connection\MemcacheException; use Elastica\Exception\InvalidException; use Elastica\Exception\PartialShardFailureException; use Elastica\Exception\ResponseException; @@ -10,31 +10,32 @@ use Elastica\Request; use Elastica\Response; /** - * Elastica Memcache Transport object + * Elastica Memcache Transport object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> + * + * @deprecated The memcached transport is deprecated as of ES 1.5, and will be removed in ES 2.0 */ class Memcache extends AbstractTransport { + const MAX_KEY_LENGTH = 250; + /** - * Makes calls to the elasticsearch server + * Makes calls to the elasticsearch server. * * @param \Elastica\Request $request - * @param array $params Host, Port, ... + * @param array $params Host, Port, ... + * * @throws \Elastica\Exception\ResponseException * @throws \Elastica\Exception\InvalidException - * @return \Elastica\Response Response object + * + * @return \Elastica\Response Response object */ public function exec(Request $request, array $params) { $memcache = new \Memcache(); $memcache->connect($this->getConnection()->getHost(), $this->getConnection()->getPort()); - // Finds right function name - $function = strtolower($request->getMethod()); - $data = $request->getData(); $content = ''; @@ -52,22 +53,34 @@ class Memcache extends AbstractTransport $responseString = ''; - switch ($function) { - case 'post': - case 'put': - $memcache->set($request->getPath(), $content); + $start = microtime(true); + + switch ($request->getMethod()) { + case Request::POST: + case Request::PUT: + $key = $request->getPath(); + $this->_checkKeyLength($key); + $memcache->set($key, $content); break; - case 'get': - $responseString = $memcache->get($request->getPath() . '?source=' . $content); + case Request::GET: + $key = $request->getPath().'?source='.$content; + $this->_checkKeyLength($key); + $responseString = $memcache->get($key); break; - case 'delete': + case Request::DELETE: + $key = $request->getPath().'?source='.$content; + $this->_checkKeyLength($key); + $responseString = $memcache->delete($key); break; default: - throw new InvalidException('Method ' . $function . ' is not supported in memcache transport'); - + case Request::HEAD: + throw new InvalidException('Method '.$request->getMethod().' is not supported in memcache transport'); } + $end = microtime(true); + $response = new Response($responseString); + $response->setQueryTime($end - $start); if ($response->hasError()) { throw new ResponseException($request, $response); @@ -79,4 +92,18 @@ class Memcache extends AbstractTransport return $response; } + + /** + * Check if key that will be used dont exceed 250 symbols. + * + * @param string $key + * + * @throws Elastica\Exception\Connection\MemcacheException If key is too long + */ + private function _checkKeyLength($key) + { + if (strlen($key) >= self::MAX_KEY_LENGTH) { + throw new MemcacheException('Memcache key is too long'); + } + } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Null.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Null.php index 704e0e12..70dd9af1 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Null.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Null.php @@ -1,44 +1,13 @@ <?php - namespace Elastica\Transport; -use Elastica\JSON; -use Elastica\Request; -use Elastica\Response; - /** - * Elastica Null Transport object + * Elastica Null Transport object. + * + * This class is for backward compatibility reason for all php < 7 versions. For PHP 7 and above use NullTransport as Null is reserved. * - * @package Elastica * @author James Boehmer <james.boehmer@jamesboehmer.com> */ -class Null extends AbstractTransport +class Null extends NullTransport { - /** - * Null transport. - * - * @param \Elastica\Request $request - * @param array $params Hostname, port, path, ... - * @return \Elastica\Response Response empty object - */ - public function exec(Request $request, array $params) - { - $response = array( - "took" => 0, - "timed_out" => FALSE, - "_shards" => array( - "total" => 0, - "successful" => 0, - "failed" => 0 - ), - "hits" => array( - "total" => 0, - "max_score" => NULL, - "hits" => array() - ), - "params" => $params - ); - - return new Response(JSON::stringify($response)); - } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/NullTransport.php b/vendor/ruflin/elastica/lib/Elastica/Transport/NullTransport.php new file mode 100644 index 00000000..d24f2110 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/NullTransport.php @@ -0,0 +1,46 @@ +<?php +namespace Elastica\Transport; + +use Elastica\JSON; +use Elastica\Request; +use Elastica\Response; + +/** + * Elastica Null Transport object. + * + * This is used in case you just need a test transport that doesn't do any connection to an elasticsearch + * host but still returns a valid response object + * + * @author James Boehmer <james.boehmer@jamesboehmer.com> + */ +class NullTransport extends AbstractTransport +{ + /** + * Null transport. + * + * @param \Elastica\Request $request + * @param array $params Hostname, port, path, ... + * + * @return \Elastica\Response Response empty object + */ + public function exec(Request $request, array $params) + { + $response = array( + 'took' => 0, + 'timed_out' => false, + '_shards' => array( + 'total' => 0, + 'successful' => 0, + 'failed' => 0, + ), + 'hits' => array( + 'total' => 0, + 'max_score' => null, + 'hits' => array(), + ), + 'params' => $params, + ); + + return new Response(JSON::stringify($response)); + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Thrift.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Thrift.php index f58c51a2..5790f665 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Thrift.php +++ b/vendor/ruflin/elastica/lib/Elastica/Transport/Thrift.php @@ -1,7 +1,7 @@ <?php - namespace Elastica\Transport; +use Elastica\Connection; use Elastica\Exception\Connection\ThriftException; use Elastica\Exception\PartialShardFailureException; use Elastica\Exception\ResponseException; @@ -9,23 +9,22 @@ use Elastica\Exception\RuntimeException; use Elastica\JSON; use Elastica\Request; use Elastica\Response; -use Elastica\Connection; use Elasticsearch\Method; -use Elasticsearch\RestResponse; use Elasticsearch\RestClient; use Elasticsearch\RestRequest; -use Thrift\Transport\TSocket; -use Thrift\Transport\TFramedTransport; -use Thrift\Transport\TBufferedTransport; -use Thrift\Protocol\TBinaryProtocolAccelerated; +use Elasticsearch\RestResponse; use Thrift\Exception\TException; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Transport\TBufferedTransport; +use Thrift\Transport\TFramedTransport; +use Thrift\Transport\TSocket; /** - * Elastica Thrift Transport object + * Elastica Thrift Transport object. * - * @category Xodoa - * @package Elastica * @author Mikhail Shamin <munk13@gmail.com> + * + * @deprecated The thrift transport is deprecated as of ES 1.5, and will be removed in ES 2.0 */ class Thrift extends AbstractTransport { @@ -35,9 +34,10 @@ class Thrift extends AbstractTransport protected $_clients = array(); /** - * Construct transport + * Construct transport. * * @param \Elastica\Connection $connection Connection object + * * @throws \Elastica\Exception\RuntimeException */ public function __construct(Connection $connection = null) @@ -50,10 +50,11 @@ class Thrift extends AbstractTransport /** * @param string $host - * @param int $port - * @param int $sendTimeout msec - * @param int $recvTimeout msec - * @param bool $framedTransport + * @param int $port + * @param int $sendTimeout msec + * @param int $recvTimeout msec + * @param bool $framedTransport + * * @return \Elasticsearch\RestClient */ protected function _createClient($host, $port, $sendTimeout = null, $recvTimeout = null, $framedTransport = false) @@ -84,28 +85,32 @@ class Thrift extends AbstractTransport /** * @param string $host - * @param int $port - * @param int $sendTimeout - * @param int $recvTimeout - * @param bool $framedTransport + * @param int $port + * @param int $sendTimeout + * @param int $recvTimeout + * @param bool $framedTransport + * * @return \Elasticsearch\RestClient */ protected function _getClient($host, $port, $sendTimeout = null, $recvTimeout = null, $framedTransport = false) { - $key = $host . ':' . $port; + $key = $host.':'.$port; if (!isset($this->_clients[$key])) { $this->_clients[$key] = $this->_createClient($host, $port, $sendTimeout, $recvTimeout, $framedTransport); } + return $this->_clients[$key]; } /** - * Makes calls to the elasticsearch server + * Makes calls to the elasticsearch server. * * @param \Elastica\Request $request - * @param array $params Host, Port, ... + * @param array $params Host, Port, ... + * * @throws \Elastica\Exception\Connection\ThriftException * @throws \Elastica\Exception\ResponseException + * * @return \Elastica\Response Response object */ public function exec(Request $request, array $params) @@ -156,9 +161,7 @@ class Thrift extends AbstractTransport throw new ThriftException($e, $request, $response); } - if (defined('DEBUG') && DEBUG) { - $response->setQueryTime($end - $start); - } + $response->setQueryTime($end - $start); if ($response->hasError()) { throw new ResponseException($request, $response); diff --git a/vendor/ruflin/elastica/lib/Elastica/Type.php b/vendor/ruflin/elastica/lib/Elastica/Type.php index 1ed952db..8abec330 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Type.php +++ b/vendor/ruflin/elastica/lib/Elastica/Type.php @@ -1,36 +1,31 @@ <?php - namespace Elastica; -use Elastica\Document; -use Elastica\Exception\RuntimeException; use Elastica\Exception\InvalidException; use Elastica\Exception\NotFoundException; -use Elastica\Exception\ResponseException; +use Elastica\Exception\RuntimeException; use Elastica\Type\Mapping; /** - * Elastica type object + * Elastica type object. * * elasticsearch has for every types as a substructure. This object * represents a type inside a context * The hierarchy is as following: client -> index -> type -> document * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> */ class Type implements SearchableInterface { /** - * Index + * Index. * * @var \Elastica\Index Index object */ protected $_index = null; /** - * Type name + * Type name. * * @var string Type name */ @@ -42,10 +37,10 @@ class Type implements SearchableInterface protected $_serializer; /** - * Creates a new type object inside the given index + * Creates a new type object inside the given index. * * @param \Elastica\Index $index Index Object - * @param string $name Type name + * @param string $name Type name */ public function __construct(Index $index, $name) { @@ -54,9 +49,10 @@ class Type implements SearchableInterface } /** - * Adds the given document to the search index + * Adds the given document to the search index. + * + * @param \Elastica\Document $doc Document with data * - * @param \Elastica\Document $doc Document with data * @return \Elastica\Response */ public function addDocument(Document $doc) @@ -111,8 +107,10 @@ class Type implements SearchableInterface /** * @param $object * @param Document $doc - * @return Response + * * @throws Exception\RuntimeException + * + * @return Response */ public function addObject($object, Document $doc = null) { @@ -130,37 +128,46 @@ class Type implements SearchableInterface } /** - * Update document, using update script. Requires elasticsearch >= 0.19.0 + * Update document, using update script. Requires elasticsearch >= 0.19.0. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html + * + * @param \Elastica\Document|\Elastica\Script $data Document with update data + * @param array $options array of query params to use for query. For possible options check es api * - * @param \Elastica\Document|\Elastica\Script $data Document with update data * @throws \Elastica\Exception\InvalidException + * * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/api/update.html */ - public function updateDocument($data) + public function updateDocument($data, array $options = array()) { if (!($data instanceof Document) && !($data instanceof Script)) { - throw new \InvalidArgumentException("Data should be a Document or Script"); + throw new \InvalidArgumentException('Data should be a Document or Script'); } if (!$data->hasId()) { throw new InvalidException('Document or Script id is not set'); } + $id = urlencode($data->getId()); + return $this->getIndex()->getClient()->updateDocument( - $data->getId(), + $id, $data, $this->getIndex()->getName(), - $this->getName() + $this->getName(), + $options ); } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function updateDocuments(array $docs) { @@ -172,11 +179,13 @@ class Type implements SearchableInterface } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function addDocuments(array $docs) { @@ -188,11 +197,13 @@ class Type implements SearchableInterface } /** - * Uses _bulk to send documents to the server + * Uses _bulk to send documents to the server. * * @param objects[] $objects + * * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function addObjects(array $objects) { @@ -213,27 +224,25 @@ class Type implements SearchableInterface } /** - * Get the document from search index + * Get the document from search index. + * + * @param string $id Document id + * @param array $options Options for the get request. * - * @param string $id Document id - * @param array $options Options for the get request. * @throws \Elastica\Exception\NotFoundException + * @throws \Elastica\Exception\ResponseException + * * @return \Elastica\Document */ public function getDocument($id, $options = array()) { $path = urlencode($id); - try { - $response = $this->request($path, Request::GET, array(), $options); - $result = $response->getData(); - } catch (ResponseException $e) { - throw new NotFoundException('doc id ' . $id . ' not found'); - } + $response = $this->request($path, Request::GET, array(), $options); + $result = $response->getData(); - $info = $response->getTransferInfo(); - if ($info['http_code'] !== 200) { - throw new NotFoundException('doc id ' . $id . ' not found'); + if (!isset($result['found']) || $result['found'] === false) { + throw new NotFoundException('doc id '.$id.' not found'); } if (isset($result['fields'])) { @@ -251,8 +260,9 @@ class Type implements SearchableInterface } /** - * @param string $id + * @param string $id * @param array|string $data + * * @return Document */ public function createDocument($id = '', $data = array()) @@ -264,7 +274,7 @@ class Type implements SearchableInterface } /** - * Returns the type name + * Returns the type name. * * @return string Type name */ @@ -274,9 +284,10 @@ class Type implements SearchableInterface } /** - * Sets value type mapping for this type + * Sets value type mapping for this type. + * + * @param \Elastica\Type\Mapping|array $mapping Elastica\Type\MappingType object or property array with all mappings * - * @param \Elastica\Type\Mapping|array $mapping Elastica\Type\MappingType object or property array with all mappings * @return \Elastica\Response */ public function setMapping($mapping) @@ -288,7 +299,7 @@ class Type implements SearchableInterface } /** - * Returns current mapping for the given type + * Returns current mapping for the given type. * * @return array Current mapping */ @@ -308,10 +319,11 @@ class Type implements SearchableInterface } /** - * Create search object + * Create search object. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) * @return \Elastica\Search */ public function createSearch($query = '', $options = null) @@ -325,11 +337,13 @@ class Type implements SearchableInterface } /** - * Do a search on this type + * Do a search on this type. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) + * + * @return \Elastica\ResultSet ResultSet with all results inside * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) - * @return \Elastica\ResultSet ResultSet with all results inside * @see \Elastica\SearchableInterface::search */ public function search($query = '', $options = null) @@ -340,10 +354,12 @@ class Type implements SearchableInterface } /** - * Count docs by query + * Count docs by query. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return int number of documents matching the query * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return int number of documents matching the query * @see \Elastica\SearchableInterface::count */ public function count($query = '') @@ -354,7 +370,7 @@ class Type implements SearchableInterface } /** - * Returns index client + * Returns index client. * * @return \Elastica\Index Index object */ @@ -365,6 +381,7 @@ class Type implements SearchableInterface /** * @param \Elastica\Document $document + * * @return \Elastica\Response */ public function deleteDocument(Document $document) @@ -378,18 +395,21 @@ class Type implements SearchableInterface 'replication', 'consistency', 'refresh', - 'timeout' + 'timeout', ) ); + return $this->deleteById($document->getId(), $options); } /** - * Uses _bulk to delete documents from the server + * Uses _bulk to delete documents from the server. + * + * @param array|\Elastica\Document[] $docs Array of Elastica\Document * - * @param array|\Elastica\Document[] $docs Array of Elastica\Document * @return \Elastica\Bulk\ResponseSet - * @link http://www.elasticsearch.org/guide/reference/api/bulk.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html */ public function deleteDocuments(array $docs) { @@ -401,14 +421,17 @@ class Type implements SearchableInterface } /** - * Deletes an entry by its unique identifier + * Deletes an entry by its unique identifier. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html + * + * @param int|string $id Document id + * @param array $options * - * @param int|string $id Document id - * @param array $options * @throws \InvalidArgumentException * @throws \Elastica\Exception\NotFoundException - * @return \Elastica\Response Response object - * @link http://www.elasticsearch.org/guide/reference/api/delete.html + * + * @return \Elastica\Response Response object */ public function deleteById($id, array $options = array()) { @@ -423,17 +446,18 @@ class Type implements SearchableInterface $responseData = $response->getData(); if (isset($responseData['found']) && false == $responseData['found']) { - throw new NotFoundException('Doc id ' . $id . ' not found and can not be deleted'); + throw new NotFoundException('Doc id '.$id.' not found and can not be deleted'); } return $response; } /** - * Deletes the given list of ids from this type + * Deletes the given list of ids from this type. + * + * @param array $ids + * @param string|false $routing Optional routing key for all ids * - * @param array $ids - * @param string|false $routing Optional routing key for all ids * @return \Elastica\Response Response object */ public function deleteIds(array $ids, $routing = false) @@ -442,18 +466,21 @@ class Type implements SearchableInterface } /** - * Deletes entries in the db based on a query + * Deletes entries in the db based on a query. + * + * @param \Elastica\Query|string $query Query object + * @param array $options Optional params * - * @param \Elastica\Query|string $query Query object - * @param array $options Optional params * @return \Elastica\Response - * @link http://www.elasticsearch.org/guide/reference/api/delete-by-query.html + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html */ public function deleteByQuery($query, array $options = array()) { if (is_string($query)) { // query_string queries are not supported for delete by query operations $options['q'] = $query; + return $this->request('_query', Request::DELETE, array(), $options); } $query = Query::create($query); @@ -474,56 +501,64 @@ class Type implements SearchableInterface } /** - * More like this query based on the given object + * More like this query based on the given object. * * The id in the given object has to be set * - * @param \Elastica\Document $doc Document to query for similar objects - * @param array $params OPTIONAL Additional arguments for the query - * @param string|array|\Elastica\Query $query OPTIONAL Query to filter the moreLikeThis results - * @return \Elastica\ResultSet ResultSet with all results inside - * @link http://www.elasticsearch.org/guide/reference/api/more-like-this.html + * @param \Elastica\Document $doc Document to query for similar objects + * @param array $params OPTIONAL Additional arguments for the query + * @param string|array|\Elastica\Query $query OPTIONAL Query to filter the moreLikeThis results + * + * @return \Elastica\ResultSet ResultSet with all results inside + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/search-more-like-this.html */ public function moreLikeThis(Document $doc, $params = array(), $query = array()) { - $path = $doc->getId() . '/_mlt'; + $path = $doc->getId().'/_mlt'; $query = Query::create($query); $response = $this->request($path, Request::GET, $query->toArray(), $params); - return new ResultSet($response, $query); + return ResultSet::create($response, $query); } /** - * Makes calls to the elasticsearch server based on this type + * Makes calls to the elasticsearch server based on this type. + * + * @param string $path Path to call + * @param string $method Rest method to use (GET, POST, DELETE, PUT) + * @param array $data OPTIONAL Arguments as array + * @param array $query OPTIONAL Query params * - * @param string $path Path to call - * @param string $method Rest method to use (GET, POST, DELETE, PUT) - * @param array $data OPTIONAL Arguments as array - * @param array $query OPTIONAL Query params * @return \Elastica\Response Response object */ public function request($path, $method, $data = array(), array $query = array()) { - $path = $this->getName() . '/' . $path; + $path = $this->getName().'/'.$path; return $this->getIndex()->request($path, $method, $data, $query); } /** - * Sets the serializer callable used in addObject + * Sets the serializer callable used in addObject. + * * @see \Elastica\Type::addObject * * @param array|string $serializer @see \Elastica\Type::_serializer + * + * @return $this */ public function setSerializer($serializer) { $this->_serializer = $serializer; + + return $this; } /** - * Checks if the given type exists in Index + * Checks if the given type exists in Index. * * @return bool True if type exists */ @@ -532,6 +567,6 @@ class Type implements SearchableInterface $response = $this->getIndex()->request($this->getName(), Request::HEAD); $info = $response->getTransferInfo(); - return (bool)($info['http_code'] == 200); + return (bool) ($info['http_code'] == 200); } } diff --git a/vendor/ruflin/elastica/lib/Elastica/Type/AbstractType.php b/vendor/ruflin/elastica/lib/Elastica/Type/AbstractType.php index ba2e0430..648102d2 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Type/AbstractType.php +++ b/vendor/ruflin/elastica/lib/Elastica/Type/AbstractType.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Type; use Elastica\Client; @@ -24,8 +23,7 @@ use Elastica\Util; * - $_indexParams: Parameters for the index * * @todo Add some settings examples to code - * @category Xodoa - * @package Elastica + * * @author Nicolas Ruflin <spam@ruflin.com> */ abstract class AbstractType implements SearchableInterface @@ -33,68 +31,69 @@ abstract class AbstractType implements SearchableInterface const MAX_DOCS_PER_REQUEST = 1000; /** - * Index name + * Index name. * * @var string Index name */ protected $_indexName = ''; /** - * Index name + * Index name. * * @var string Index name */ protected $_typeName = ''; /** - * Client + * Client. * * @var \Elastica\Client Client object */ protected $_client = null; /** - * Index + * Index. * * @var \Elastica\Index Index object */ protected $_index = null; /** - * Type + * Type. * * @var \Elastica\Type Type object */ protected $_type = null; /** - * Mapping + * Mapping. * * @var array Mapping */ protected $_mapping = array(); /** - * Index params + * Index params. * * @var array Index params */ protected $_indexParams = array(); /** - * Source + * Source. * - * @var boolean Source + * @var bool Source */ protected $_source = true; /** - * Creates index object with client connection + * Creates index object with client connection. * * Reads index and type name from protected vars _indexName and _typeName. * Has to be set in child class * - * @param \Elastica\Client $client OPTIONAL Client object + * @param \Elastica\Client $client OPTIONAL Client object + * * @throws \Elastica\Exception\InvalidException */ public function __construct(Client $client = null) @@ -117,7 +116,7 @@ abstract class AbstractType implements SearchableInterface } /** - * Creates the index and sets the mapping for this type + * Creates the index and sets the mapping for this type. * * @param bool $recreate OPTIONAL Recreates the index if true (default = false) */ @@ -133,7 +132,8 @@ abstract class AbstractType implements SearchableInterface /** * @param \Elastica\Query $query - * @param array|int $options + * @param array|int $options + * * @return \Elastica\Search */ public function createSearch($query = '', $options = null) @@ -142,10 +142,12 @@ abstract class AbstractType implements SearchableInterface } /** - * Search on the type + * Search on the type. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return \Elastica\ResultSet ResultSet with all results inside * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return \Elastica\ResultSet ResultSet with all results inside * @see \Elastica\SearchableInterface::search */ public function search($query = '', $options = null) @@ -154,10 +156,12 @@ abstract class AbstractType implements SearchableInterface } /** - * Count docs in the type based on query + * Count docs in the type based on query. + * + * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object + * + * @return int number of documents matching the query * - * @param string|array|\Elastica\Query $query Array with all query data inside or a Elastica\Query object - * @return int number of documents matching the query * @see \Elastica\SearchableInterface::count */ public function count($query = '') @@ -166,7 +170,7 @@ abstract class AbstractType implements SearchableInterface } /** - * Returns the search index + * Returns the search index. * * @return \Elastica\Index Index object */ @@ -176,7 +180,7 @@ abstract class AbstractType implements SearchableInterface } /** - * Returns type object + * Returns type object. * * @return \Elastica\Type Type object */ @@ -186,11 +190,12 @@ abstract class AbstractType implements SearchableInterface } /** - * Converts given time to format: 1995-12-31T23:59:59Z + * Converts given time to format: 1995-12-31T23:59:59Z. * * This is the lucene date format * - * @param int $date Date input (could be string etc.) -> must be supported by strtotime + * @param int $date Date input (could be string etc.) -> must be supported by strtotime + * * @return string Converted date string */ public function convertDate($date) diff --git a/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php b/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php index 920093fb..509f0ce2 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php +++ b/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php @@ -1,5 +1,4 @@ <?php - namespace Elastica\Type; use Elastica\Exception\InvalidException; @@ -7,34 +6,33 @@ use Elastica\Request; use Elastica\Type; /** - * Elastica Mapping object + * Elastica Mapping object. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> - * @link http://www.elasticsearch.org/guide/reference/mapping/ + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html */ class Mapping { /** - * Mapping + * Mapping. * * @var array Mapping */ protected $_mapping = array(); /** - * Type + * Type. * * @var \Elastica\Type Type object */ protected $_type = null; /** - * Construct Mapping + * Construct Mapping. * * @param \Elastica\Type $type OPTIONAL Type object - * @param array $properties OPTIONAL Properties + * @param array $properties OPTIONAL Properties */ public function __construct(Type $type = null, array $properties = array()) { @@ -50,8 +48,10 @@ class Mapping /** * Sets the mapping type * Enter description here ... - * @param \Elastica\Type $type Type object - * @return \Elastica\Type\Mapping Current object + * + * @param \Elastica\Type $type Type object + * + * @return $this */ public function setType(Type $type) { @@ -61,10 +61,11 @@ class Mapping } /** - * Sets the mapping properties + * Sets the mapping properties. + * + * @param array $properties Properties * - * @param array $properties Properties - * @return \Elastica\Type\Mapping Mapping object + * @return $this */ public function setProperties(array $properties) { @@ -72,9 +73,9 @@ class Mapping } /** - * Gets the mapping properties + * Gets the mapping properties. * - * @return array $properties Properties + * @return array $properties Properties */ public function getProperties() { @@ -82,10 +83,13 @@ class Mapping } /** - * Sets the mapping _meta + * Sets the mapping _meta. + * * @param array $meta metadata - * @return \Elastica\Type\Mapping Mapping object - * @link http://www.elasticsearch.org/guide/reference/mapping/meta.html + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta.html */ public function setMeta(array $meta) { @@ -93,7 +97,7 @@ class Mapping } /** - * Returns mapping type + * Returns mapping type. * * @return \Elastica\Type Type */ @@ -103,14 +107,16 @@ class Mapping } /** - * Sets source values + * Sets source values. * * To disable source, argument is * array('enabled' => false) * - * @param array $source Source array - * @return \Elastica\Type\Mapping Current object - * @link http://www.elasticsearch.org/guide/reference/mapping/source-field.html + * @param array $source Source array + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html */ public function setSource(array $source) { @@ -118,12 +124,13 @@ class Mapping } /** - * Disables the source in the index + * Disables the source in the index. * * Param can be set to true to enable again * - * @param bool $enabled OPTIONAL (default = false) - * @return \Elastica\Type\Mapping Current object + * @param bool $enabled OPTIONAL (default = false) + * + * @return $this */ public function disableSource($enabled = false) { @@ -131,7 +138,7 @@ class Mapping } /** - * Sets raw parameters + * Sets raw parameters. * * Possible options: * _uid @@ -147,9 +154,10 @@ class Mapping * _size * properties * - * @param string $key Key name - * @param mixed $value Key value - * @return \Elastica\Type\Mapping Current object + * @param string $key Key name + * @param mixed $value Key value + * + * @return $this */ public function setParam($key, $value) { @@ -159,22 +167,25 @@ class Mapping } /** - * Get raw parameters + * Get raw parameters. * * @see setParam - * @param string $key Key name - * @return mixed $value Key value + * + * @param string $key Key name + * + * @return mixed $value Key value */ public function getParam($key) { - return isset($this->_mapping[$key])?$this->_mapping[$key]:null; + return isset($this->_mapping[$key]) ? $this->_mapping[$key] : null; } /** - * Sets params for the "_all" field + * Sets params for the "_all" field. + * + * @param array $params _all Params (enabled, store, term_vector, analyzer) * - * @param array $params _all Params (enabled, store, term_vector, analyzer) - * @return \Elastica\Type\Mapping + * @return $this */ public function setAllField(array $params) { @@ -182,10 +193,11 @@ class Mapping } /** - * Enables the "_all" field + * Enables the "_all" field. * - * @param bool $enabled OPTIONAL (default = true) - * @return \Elastica\Type\Mapping + * @param bool $enabled OPTIONAL (default = true) + * + * @return $this */ public function enableAllField($enabled = true) { @@ -193,22 +205,23 @@ class Mapping } /** - * Set TTL + * Set TTL. + * + * @param array $params TTL Params (enabled, default, ...) * - * @param array $params TTL Params (enabled, default, ...) - * @return \Elastica\Type\Mapping + * @return $this */ public function setTtl(array $params) { return $this->setParam('_ttl', $params); - } /** - * Enables TTL for all documents in this type + * Enables TTL for all documents in this type. * - * @param bool $enabled OPTIONAL (default = true) - * @return \Elastica\Type\Mapping + * @param bool $enabled OPTIONAL (default = true) + * + * @return $this */ public function enableTtl($enabled = true) { @@ -216,10 +229,11 @@ class Mapping } /** - * Set parent type + * Set parent type. + * + * @param string $type Parent type * - * @param string $type Parent type - * @return \Elastica\Type\Mapping + * @return $this */ public function setParent($type) { @@ -227,10 +241,11 @@ class Mapping } /** - * Converts the mapping to an array + * Converts the mapping to an array. * * @throws \Elastica\Exception\InvalidException - * @return array Mapping as array + * + * @return array Mapping as array */ public function toArray() { @@ -244,7 +259,7 @@ class Mapping } /** - * Submits the mapping and sends it to the server + * Submits the mapping and sends it to the server. * * @return \Elastica\Response Response object */ @@ -256,22 +271,24 @@ class Mapping } /** - * Creates a mapping object + * Creates a mapping object. + * + * @param array|\Elastica\Type\Mapping $mapping Mapping object or properties array * - * @param array|\Elastica\Type\Mapping $mapping Mapping object or properties array - * @return \Elastica\Type\Mapping Mapping object * @throws \Elastica\Exception\InvalidException If invalid type + * + * @return self */ public static function create($mapping) { if (is_array($mapping)) { - $mappingObject = new Mapping(); + $mappingObject = new self(); $mappingObject->setProperties($mapping); } else { $mappingObject = $mapping; } - if (!$mappingObject instanceof Mapping) { + if (!$mappingObject instanceof self) { throw new InvalidException('Invalid object type'); } diff --git a/vendor/ruflin/elastica/lib/Elastica/Util.php b/vendor/ruflin/elastica/lib/Elastica/Util.php index 679bd558..a49f2d78 100644 --- a/vendor/ruflin/elastica/lib/Elastica/Util.php +++ b/vendor/ruflin/elastica/lib/Elastica/Util.php @@ -1,29 +1,27 @@ <?php - namespace Elastica; -use Elastica\JSON; - /** - * Elastica tools + * Elastica tools. * - * @category Xodoa - * @package Elastica * @author Nicolas Ruflin <spam@ruflin.com> * @author Thibault Duplessis <thibault.duplessis@gmail.com> * @author Oleg Zinchenko <olegz@default-value.com> + * @author Roberto Nygaard <roberto@nygaard.es> */ class Util { /** * Replace the following reserved words: AND OR NOT * and - * escapes the following terms: + - && || ! ( ) { } [ ] ^ " ~ * ? : \ + * escapes the following terms: + - && || ! ( ) { } [ ] ^ " ~ * ? : \. * - * @param string $term Query term to replace and escape - * @return string Replaced and escaped query term * @link http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boolean%20operators * @link http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Escaping%20Special%20Characters + * + * @param string $term Query term to replace and escape + * + * @return string Replaced and escaped query term */ public static function replaceBooleanWordsAndEscapeTerm($term) { @@ -36,78 +34,82 @@ class Util /** * Escapes the following terms (because part of the query language) - * + - && || ! ( ) { } [ ] ^ " ~ * ? : \ + * + - && || ! ( ) { } [ ] ^ " ~ * ? : \ < >. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters + * + * @param string $term Query term to escape * - * @param string $term Query term to escape * @return string Escaped query term - * @link http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Escaping%20Special%20Characters */ public static function escapeTerm($term) { $result = $term; // \ escaping has to be first, otherwise escaped later once again - $chars = array('\\', '+', '-', '&&', '||', '!', '(', ')', '{', '}', '[', ']', '^', '"', '~', '*', '?', ':'); + $chars = array('\\', '+', '-', '&&', '||', '!', '(', ')', '{', '}', '[', ']', '^', '"', '~', '*', '?', ':', '/', '<', '>'); foreach ($chars as $char) { - $result = str_replace($char, '\\' . $char, $result); + $result = str_replace($char, '\\'.$char, $result); } - // since elasticsearch uses lucene 4.0 / needs to be escaped by \\ - $result = str_replace('/', '\\\\/', $result); - return $result; } /** * Replace the following reserved words (because part of the query language) - * AND OR NOT + * AND OR NOT. * - * @param string $term Query term to replace - * @return string Replaced query term * @link http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boolean%20operators + * + * @param string $term Query term to replace + * + * @return string Replaced query term */ public static function replaceBooleanWords($term) { - $replacementMap = array('AND'=>'&&', 'OR'=>'||', 'NOT'=>'!'); + $replacementMap = array(' AND ' => ' && ', ' OR ' => ' || ', ' NOT ' => ' !'); $result = strtr($term, $replacementMap); return $result; } /** - * Converts a snake_case string to CamelCase + * Converts a snake_case string to CamelCase. * * For example: hello_world to HelloWorld * - * @param string $string snake_case string + * @param string $string snake_case string + * * @return string CamelCase string */ public static function toCamelCase($string) { - return str_replace(" ", "", ucwords(str_replace("_", " ", $string))); + return str_replace(' ', '', ucwords(str_replace('_', ' ', $string))); } /** - * Converts a CamelCase string to snake_case + * Converts a CamelCase string to snake_case. * * For Example HelloWorld to hello_world * - * @param string $string CamelCase String to Convert + * @param string $string CamelCase String to Convert + * * @return string SnakeCase string */ public static function toSnakeCase($string) { $string = preg_replace('/([A-Z])/', '_$1', $string); - return strtolower(substr($string,1)); + return strtolower(substr($string, 1)); } /** - * Converts given time to format: 1995-12-31T23:59:59Z + * Converts given time to format: 1995-12-31T23:59:59Z. * * This is the lucene date format * - * @param int $date Date input (could be string etc.) -> must be supported by strtotime + * @param int $date Date input (could be string etc.) -> must be supported by strtotime + * * @return string Converted date string */ public static function convertDate($date) @@ -117,16 +119,35 @@ class Util } else { $timestamp = strtotime($date); } - $string = date('Y-m-d\TH:i:s\Z', $timestamp); + $string = date('Y-m-d\TH:i:s\Z', $timestamp); + + return $string; + } + + /** + * Convert a \DateTime object to format: 1995-12-31T23:59:59Z+02:00. + * + * Converts it to the lucene format, including the appropriate TimeZone + * + * @param \DateTime $dateTime + * @param bool $includeTimezone + * + * @return string + */ + public static function convertDateTimeObject(\DateTime $dateTime, $includeTimezone = true) + { + $formatString = 'Y-m-d\TH:i:s'.($includeTimezone === true ? 'P' : '\Z'); + $string = $dateTime->format($formatString); return $string; } /** * Tries to guess the name of the param, based on its class - * Example: \Elastica\Filter\HasChildFilter => has_child + * Example: \Elastica\Filter\HasChildFilter => has_child. * * @param string|object Class or Class name + * * @return string parameter name */ public static function getParamName($class) @@ -136,36 +157,38 @@ class Util } $parts = explode('\\', $class); - $last = array_pop($parts); - $last = preg_replace('/(Facet|Query|Filter)$/', '', $last); - $name = self::toSnakeCase($last); + $last = array_pop($parts); + $last = preg_replace('/(Facet|Query|Filter)$/', '', $last); + $name = self::toSnakeCase($last); return $name; } /** - * Converts Request to Curl console command + * Converts Request to Curl console command. * * @param Request $request + * * @return string */ public static function convertRequestToCurlCommand(Request $request) { - $message = 'curl -X' . strtoupper($request->getMethod()) . ' '; - $message .= '\'http://' . $request->getConnection()->getHost() . ':' . $request->getConnection()->getPort() . '/'; + $message = 'curl -X'.strtoupper($request->getMethod()).' '; + $message .= '\'http://'.$request->getConnection()->getHost().':'.$request->getConnection()->getPort().'/'; $message .= $request->getPath(); $query = $request->getQuery(); if (!empty($query)) { - $message .= '?' . http_build_query($query); + $message .= '?'.http_build_query($query); } $message .= '\''; $data = $request->getData(); if (!empty($data)) { - $message .= ' -d \'' . JSON::stringify($data) . '\''; + $message .= ' -d \''.JSON::stringify($data).'\''; } + return $message; } } |