summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/lib/Elastica/Search.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Search.php')
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/Search.php514
1 files changed, 0 insertions, 514 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Search.php b/vendor/ruflin/elastica/lib/Elastica/Search.php
deleted file mode 100644
index 4163a1a2..00000000
--- a/vendor/ruflin/elastica/lib/Elastica/Search.php
+++ /dev/null
@@ -1,514 +0,0 @@
-<?php
-
-namespace Elastica;
-
-use Elastica\Exception\InvalidException;
-use Elastica\Suggest;
-
-/**
- * Elastica search object
- *
- * @category Xodoa
- * @package Elastica
- * @author Nicolas Ruflin <spam@ruflin.com>
- */
-class Search
-{
- /*
- * Options
- */
- const OPTION_SEARCH_TYPE = 'search_type';
- const OPTION_ROUTING = 'routing';
- const OPTION_PREFERENCE = 'preference';
- const OPTION_VERSION = 'version';
- const OPTION_TIMEOUT = 'timeout';
- const OPTION_FROM = 'from';
- const OPTION_SIZE = 'size';
- const OPTION_SCROLL = 'scroll';
- const OPTION_SCROLL_ID = 'scroll_id';
-
- /*
- * Search types
- */
- const OPTION_SEARCH_TYPE_COUNT = 'count';
- const OPTION_SEARCH_TYPE_SCAN = 'scan';
- const OPTION_SEARCH_TYPE_DFS_QUERY_THEN_FETCH = 'dfs_query_then_fetch';
- const OPTION_SEARCH_TYPE_DFS_QUERY_AND_FETCH = 'dfs_query_and_fetch';
- const OPTION_SEARCH_TYPE_QUERY_THEN_FETCH = 'query_then_fetch';
- const OPTION_SEARCH_TYPE_QUERY_AND_FETCH = 'query_and_fetch';
- const OPTION_SEARCH_TYPE_SUGGEST = 'suggest';
- const OPTION_SEARCH_TYPE_SCROLL = 'scroll';
-
- /**
- * Array of indices
- *
- * @var array
- */
- protected $_indices = array();
-
- /**
- * Array of types
- *
- * @var array
- */
- protected $_types = array();
-
- /**
- * @var \Elastica\Query
- */
- protected $_query;
-
- /**
- * @var array
- */
- protected $_options = array();
-
- /**
- * Client object
- *
- * @var \Elastica\Client
- */
- protected $_client;
-
- /**
- * Constructs search object
- *
- * @param \Elastica\Client $client Client object
- */
- public function __construct(Client $client)
- {
- $this->_client = $client;
- }
-
- /**
- * Adds a index to the list
- *
- * @param \Elastica\Index|string $index Index object or string
- * @throws \Elastica\Exception\InvalidException
- * @return \Elastica\Search Current object
- */
- public function addIndex($index)
- {
- if ($index instanceof Index) {
- $index = $index->getName();
- }
-
- if (!is_string($index)) {
- throw new InvalidException('Invalid param type');
- }
-
- $this->_indices[] = $index;
-
- return $this;
- }
-
- /**
- * Add array of indices at once
- *
- * @param array $indices
- * @return \Elastica\Search
- */
- public function addIndices(array $indices = array())
- {
- foreach ($indices as $index) {
- $this->addIndex($index);
- }
-
- return $this;
- }
-
- /**
- * Adds a type to the current search
- *
- * @param \Elastica\Type|string $type Type name or object
- * @return \Elastica\Search Search object
- * @throws \Elastica\Exception\InvalidException
- */
- public function addType($type)
- {
- if ($type instanceof Type) {
- $type = $type->getName();
- }
-
- if (!is_string($type)) {
- throw new InvalidException('Invalid type type');
- }
-
- $this->_types[] = $type;
-
- return $this;
- }
-
- /**
- * Add array of types
- *
- * @param array $types
- * @return \Elastica\Search
- */
- public function addTypes(array $types = array())
- {
- foreach ($types as $type) {
- $this->addType($type);
- }
-
- return $this;
- }
-
- /**
- * @param string|array|\Elastica\Query|\Elastica\Suggest|\Elastica\Query\AbstractQuery|\Elastica\Filter\AbstractFilter $query|
- * @return \Elastica\Search
- */
- public function setQuery($query)
- {
- $this->_query = Query::create($query);
-
- return $this;
- }
-
- /**
- * @param string $key
- * @param mixed $value
- * @return \Elastica\Search
- */
- public function setOption($key, $value)
- {
- $this->_validateOption($key);
-
- $this->_options[$key] = $value;
-
- return $this;
- }
-
- /**
- * @param array $options
- * @return \Elastica\Search
- */
- public function setOptions(array $options)
- {
- $this->clearOptions();
-
- foreach ($options as $key => $value) {
- $this->setOption($key, $value);
- }
-
- return $this;
- }
-
- /**
- * @return \Elastica\Search
- */
- public function clearOptions()
- {
- $this->_options = array();
-
- return $this;
- }
-
- /**
- * @param string $key
- * @param mixed $value
- * @return \Elastica\Search
- */
- public function addOption($key, $value)
- {
- $this->_validateOption($key);
-
- if (!isset($this->_options[$key])) {
- $this->_options[$key] = array();
- }
-
- $this->_options[$key][] = $value;
-
- return $this;
- }
-
- /**
- * @param string $key
- * @return bool
- */
- public function hasOption($key)
- {
- return isset($this->_options[$key]);
- }
-
- /**
- * @param string $key
- * @return mixed
- * @throws \Elastica\Exception\InvalidException
- */
- public function getOption($key)
- {
- if (!$this->hasOption($key)) {
- throw new InvalidException('Option ' . $key . ' does not exist');
- }
-
- return $this->_options[$key];
- }
-
- /**
- * @return array
- */
- public function getOptions()
- {
- return $this->_options;
- }
-
- /**
- * @param string $key
- * @return bool
- * @throws \Elastica\Exception\InvalidException
- */
- protected function _validateOption($key)
- {
- switch ($key) {
- case self::OPTION_SEARCH_TYPE:
- case self::OPTION_ROUTING:
- case self::OPTION_PREFERENCE:
- case self::OPTION_VERSION:
- case self::OPTION_TIMEOUT:
- case self::OPTION_FROM:
- case self::OPTION_SIZE:
- case self::OPTION_SCROLL:
- case self::OPTION_SCROLL_ID:
- case self::OPTION_SEARCH_TYPE_SUGGEST:
- return true;
- }
-
- throw new InvalidException('Invalid option ' . $key);
- }
-
- /**
- * Return client object
- *
- * @return \Elastica\Client Client object
- */
- public function getClient()
- {
- return $this->_client;
- }
-
- /**
- * Return array of indices
- *
- * @return array List of index names
- */
- public function getIndices()
- {
- return $this->_indices;
- }
-
- /**
- * @return bool
- */
- public function hasIndices()
- {
- return count($this->_indices) > 0;
- }
-
- /**
- * @param Index|string $index
- * @return bool
- */
- public function hasIndex($index)
- {
- if ($index instanceof Index) {
- $index = $index->getName();
- }
-
- return in_array($index, $this->_indices);
- }
-
- /**
- * Return array of types
- *
- * @return array List of types
- */
- public function getTypes()
- {
- return $this->_types;
- }
-
- /**
- * @return bool
- */
- public function hasTypes()
- {
- return count($this->_types) > 0;
- }
-
- /**
- * @param \Elastica\Type|string $type
- * @return bool
- */
- public function hasType($type)
- {
- if ($type instanceof Type) {
- $type = $type->getName();
- }
-
- return in_array($type, $this->_types);
- }
-
- /**
- * @return \Elastica\Query
- */
- public function getQuery()
- {
- if (null === $this->_query) {
- $this->_query = Query::create('');
- }
-
- return $this->_query;
- }
-
- /**
- * Creates new search object
- *
- * @param \Elastica\SearchableInterface $searchObject
- * @return \Elastica\Search
- */
- public static function create(SearchableInterface $searchObject)
- {
- return $searchObject->createSearch();
- }
-
- /**
- * Combines indices and types to the search request path
- *
- * @return string Search path
- */
- public function getPath()
- {
- if (isset($this->_options[self::OPTION_SCROLL_ID])) {
- return '_search/scroll';
- }
-
- $indices = $this->getIndices();
-
- $path = '';
- $types = $this->getTypes();
-
- if (empty($indices)) {
- if (!empty($types)) {
- $path .= '_all';
- }
- } else {
- $path .= implode(',', $indices);
- }
-
- if (!empty($types)) {
- $path .= '/' . implode(',', $types);
- }
-
- // Add full path based on indices and types -> could be all
- return $path . '/_search';
- }
-
- /**
- * Search in the set indices, types
- *
- * @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)
- {
- $this->setOptionsAndQuery($options, $query);
-
- $query = $this->getQuery();
- $path = $this->getPath();
-
- $params = $this->getOptions();
-
- // Send scroll_id via raw HTTP body to handle cases of very large (> 4kb) ids.
- if ('_search/scroll' == $path) {
- $data = $params[self::OPTION_SCROLL_ID];
- unset($params[self::OPTION_SCROLL_ID]);
- } else {
- $data = $query->toArray();
- }
-
- $response = $this->getClient()->request(
- $path,
- Request::GET,
- $data,
- $params
- );
-
- return new ResultSet($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.
- * @return int|ResultSet
- */
- public function count($query = '', $fullResult = false)
- {
- $this->setOptionsAndQuery(null, $query);
-
- $query = $this->getQuery();
- $path = $this->getPath();
-
- $response = $this->getClient()->request(
- $path,
- Request::GET,
- $query->toArray(),
- array(self::OPTION_SEARCH_TYPE => self::OPTION_SEARCH_TYPE_COUNT)
- );
- $resultSet = new ResultSet($response, $query);
-
- return $fullResult ? $resultSet : $resultSet->getTotalHits();
- }
-
- /**
- * @param array|int $options
- * @param string|array|\Elastica\Query $query
- * @return \Elastica\Search
- */
- public function setOptionsAndQuery($options = null, $query = '')
- {
- if ('' != $query) {
- $this->setQuery($query);
- }
-
- if (is_int($options)) {
- $this->getQuery()->setSize($options);
- } elseif (is_array($options)) {
- if (isset($options['limit'])) {
- $this->getQuery()->setSize($options['limit']);
- unset($options['limit']);
- }
- if (isset($options['explain'])) {
- $this->getQuery()->setExplain($options['explain']);
- unset($options['explain']);
- }
- $this->setOptions($options);
- }
-
- return $this;
- }
-
- /**
- * @param Suggest $suggest
- * @return Search
- */
- public function setSuggest(Suggest $suggest)
- {
- return $this->setOptionsAndQuery(array(self::OPTION_SEARCH_TYPE_SUGGEST => 'suggest'), $suggest);
- }
-
- /**
- * Returns the ScanAndScroll Iterator
- *
- * @see Elastica\ScanAndScroll
- * @param string $expiryTime
- * @param int $sizePerShard
- * @return ScanAndScroll
- */
- public function scanAndScroll($expiryTime = '1m', $sizePerShard = 1000) {
- return new ScanAndScroll($this, $expiryTime, $sizePerShard);
- }
-}