diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2015-12-17 09:15:42 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2015-12-17 09:44:51 +0100 |
commit | a1789ddde42033f1b05cc4929491214ee6e79383 (patch) | |
tree | 63615735c4ddffaaabf2428946bb26f90899f7bf /vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php | |
parent | 9e06a62f265e3a2aaabecc598d4bc617e06fa32d (diff) |
Update to MediaWiki 1.26.0
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php')
-rw-r--r-- | vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php b/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php new file mode 100644 index 00000000..509f0ce2 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php @@ -0,0 +1,297 @@ +<?php +namespace Elastica\Type; + +use Elastica\Exception\InvalidException; +use Elastica\Request; +use Elastica\Type; + +/** + * Elastica Mapping object. + * + * @author Nicolas Ruflin <spam@ruflin.com> + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html + */ +class Mapping +{ + /** + * Mapping. + * + * @var array Mapping + */ + protected $_mapping = array(); + + /** + * Type. + * + * @var \Elastica\Type Type object + */ + protected $_type = null; + + /** + * Construct Mapping. + * + * @param \Elastica\Type $type OPTIONAL Type object + * @param array $properties OPTIONAL Properties + */ + public function __construct(Type $type = null, array $properties = array()) + { + if ($type) { + $this->setType($type); + } + + if (!empty($properties)) { + $this->setProperties($properties); + } + } + + /** + * Sets the mapping type + * Enter description here ... + * + * @param \Elastica\Type $type Type object + * + * @return $this + */ + public function setType(Type $type) + { + $this->_type = $type; + + return $this; + } + + /** + * Sets the mapping properties. + * + * @param array $properties Properties + * + * @return $this + */ + public function setProperties(array $properties) + { + return $this->setParam('properties', $properties); + } + + /** + * Gets the mapping properties. + * + * @return array $properties Properties + */ + public function getProperties() + { + return $this->getParam('properties'); + } + + /** + * Sets the mapping _meta. + * + * @param array $meta metadata + * + * @return $this + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta.html + */ + public function setMeta(array $meta) + { + return $this->setParam('_meta', $meta); + } + + /** + * Returns mapping type. + * + * @return \Elastica\Type Type + */ + public function getType() + { + return $this->_type; + } + + /** + * Sets source values. + * + * To disable source, argument is + * array('enabled' => false) + * + * @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) + { + return $this->setParam('_source', $source); + } + + /** + * Disables the source in the index. + * + * Param can be set to true to enable again + * + * @param bool $enabled OPTIONAL (default = false) + * + * @return $this + */ + public function disableSource($enabled = false) + { + return $this->setSource(array('enabled' => $enabled)); + } + + /** + * Sets raw parameters. + * + * Possible options: + * _uid + * _id + * _type + * _source + * _all + * _analyzer + * _boost + * _parent + * _routing + * _index + * _size + * properties + * + * @param string $key Key name + * @param mixed $value Key value + * + * @return $this + */ + public function setParam($key, $value) + { + $this->_mapping[$key] = $value; + + return $this; + } + + /** + * Get raw parameters. + * + * @see setParam + * + * @param string $key Key name + * + * @return mixed $value Key value + */ + public function getParam($key) + { + return isset($this->_mapping[$key]) ? $this->_mapping[$key] : null; + } + + /** + * Sets params for the "_all" field. + * + * @param array $params _all Params (enabled, store, term_vector, analyzer) + * + * @return $this + */ + public function setAllField(array $params) + { + return $this->setParam('_all', $params); + } + + /** + * Enables the "_all" field. + * + * @param bool $enabled OPTIONAL (default = true) + * + * @return $this + */ + public function enableAllField($enabled = true) + { + return $this->setAllField(array('enabled' => $enabled)); + } + + /** + * Set TTL. + * + * @param array $params TTL Params (enabled, default, ...) + * + * @return $this + */ + public function setTtl(array $params) + { + return $this->setParam('_ttl', $params); + } + + /** + * Enables TTL for all documents in this type. + * + * @param bool $enabled OPTIONAL (default = true) + * + * @return $this + */ + public function enableTtl($enabled = true) + { + return $this->setTTL(array('enabled' => $enabled)); + } + + /** + * Set parent type. + * + * @param string $type Parent type + * + * @return $this + */ + public function setParent($type) + { + return $this->setParam('_parent', array('type' => $type)); + } + + /** + * Converts the mapping to an array. + * + * @throws \Elastica\Exception\InvalidException + * + * @return array Mapping as array + */ + public function toArray() + { + $type = $this->getType(); + + if (empty($type)) { + throw new InvalidException('Type has to be set'); + } + + return array($type->getName() => $this->_mapping); + } + + /** + * Submits the mapping and sends it to the server. + * + * @return \Elastica\Response Response object + */ + public function send() + { + $path = '_mapping'; + + return $this->getType()->request($path, Request::PUT, $this->toArray()); + } + + /** + * Creates a mapping object. + * + * @param array|\Elastica\Type\Mapping $mapping Mapping object or properties array + * + * @throws \Elastica\Exception\InvalidException If invalid type + * + * @return self + */ + public static function create($mapping) + { + if (is_array($mapping)) { + $mappingObject = new self(); + $mappingObject->setProperties($mapping); + } else { + $mappingObject = $mapping; + } + + if (!$mappingObject instanceof self) { + throw new InvalidException('Invalid object type'); + } + + return $mappingObject; + } +} |