* @license http://www.apache.org/licenses/LICENSE-2.0 Apache2 * @link http://elastic.co */ class Index extends AbstractEndpoint { /** @var bool */ private $createIfAbsent = false; /** * @param array $body * * @throws \Elasticsearch\Common\Exceptions\InvalidArgumentException * @return $this */ public function setBody($body) { if (isset($body) !== true) { return $this; } $this->body = $body; return $this; } /** * @return $this */ public function createIfAbsent() { $this->createIfAbsent = true; return $this; } /** * @throws \Elasticsearch\Common\Exceptions\RuntimeException * @return string */ public function getURI() { if (isset($this->index) !== true) { throw new Exceptions\RuntimeException( 'index is required for Index' ); } if (isset($this->type) !== true) { throw new Exceptions\RuntimeException( 'type is required for Index' ); } $id = $this->id; $index = $this->index; $type = $this->type; $uri = "/$index/$type"; if (isset($id) === true) { $uri = "/$index/$type/$id"; } return $uri; } /** * @return string[] */ public function getParamWhitelist() { return array( 'consistency', 'op_type', 'parent', 'percolate', 'refresh', 'replication', 'routing', 'timeout', 'timestamp', 'ttl', 'version', 'version_type', 'pipeline' ); } /** * @return string */ public function getMethod() { if (isset($this->id) === true) { return 'PUT'; } else { return 'POST'; } } /** * @return array * @throws \Elasticsearch\Common\Exceptions\RuntimeException */ public function getBody() { if (isset($this->body) !== true) { throw new Exceptions\RuntimeException('Document body must be set for index request'); } else { return $this->body; } } }