本文整理汇总了PHP中Elastica\Script类的典型用法代码示例。如果您正苦于以下问题:PHP Script类的具体用法?PHP Script怎么用?PHP Script使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Script类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setScript
/**
* Set a script for this aggregation.
*
* @param string|Script $script
*
* @return $this
*/
public function setScript($script)
{
if ($script instanceof Script) {
$params = array_merge($this->getParams(), $script->toArray());
return $this->setParams($params);
}
return $this->setParam('script', $script);
}
示例2: setScript
/**
* Set a script for this aggregation
* @param string|Script $script
* @return AbstractSimpleAggregation
*/
public function setScript($script)
{
if ($script instanceof Script) {
$this->setParam('params', $script->getParams());
$script = $script->getScript();
}
return $this->setParam('script', $script);
}
示例3: addScript
/**
* @param string $name Name of the Script field
* @param \Elastica\Script $script
* @throws \Elastica\Exception\InvalidException
* @return \Elastica\ScriptFields
*/
public function addScript($name, Script $script)
{
if (!is_string($name) || !strlen($name)) {
throw new InvalidException('The name of a Script is required and must be a string');
}
$this->setParam($name, $script->toArray());
return $this;
}
示例4: testSetScript
public function testSetScript()
{
$string = '_score * 2.0';
$lang = 'mvel';
$params = array('param1' => 'one', 'param2' => 1);
$script = new Script($string);
$script->setLang('mvel');
$script->setParams($params);
$customScoreQuery = new CustomScore();
$customScoreQuery->setScript($script);
$expected = array('custom_score' => array('query' => array('match_all' => new \stdClass()), 'script' => $string, 'params' => $params, 'lang' => $lang));
$this->assertEquals($expected, $customScoreQuery->toArray());
}
示例5: setScript
/**
* Set script
*
* @param string|\Elastica\Script $script
* @return \Elastica\Query\CustomScore
*/
public function setScript($script)
{
$script = Script::create($script);
foreach ($script->toArray() as $param => $value) {
$this->setParam($param, $value);
}
return $this;
}
示例6: testAddFilterScript
public function testAddFilterScript()
{
$customFiltersScoreQuery = new CustomFiltersScore();
$rangeFilter = new Range('age', array('from' => 20, 'to' => 30));
$rangeScript = "doc['num1'].value > 1";
$customFiltersScoreQuery->addFilterScript($rangeFilter, $rangeScript);
$expected = array('custom_filters_score' => array('query' => array('match_all' => new \stdClass()), 'filters' => array(array('filter' => $rangeFilter->toArray(), 'script' => $rangeScript))));
$this->assertEquals($expected, $customFiltersScoreQuery->toArray());
$customFiltersScoreQuery = new CustomFiltersScore();
$script = "doc['num1'].value > 1";
$rangeScript = new Script($script);
$rangeScript->setParam('param1', 1);
$rangeScript->setLang(Script::LANG_GROOVY);
$customFiltersScoreQuery->addFilterScript($rangeFilter, $rangeScript);
$expected = array('custom_filters_score' => array('query' => array('match_all' => new \stdClass()), 'filters' => array(array('filter' => $rangeFilter->toArray(), 'script' => $script))));
$this->assertEquals($expected, $customFiltersScoreQuery->toArray());
$termFilter = new Term();
$termFilter->setTerm('name', 'ruflin');
$termScript = "doc['num2'].value > 1";
$customFiltersScoreQuery->addFilterScript($termFilter, $termScript);
$expected = array('custom_filters_score' => array('query' => array('match_all' => new \stdClass()), 'filters' => array(array('filter' => $rangeFilter->toArray(), 'script' => $script), array('filter' => $termFilter->toArray(), 'script' => $termScript))));
$this->assertEquals($expected, $customFiltersScoreQuery->toArray());
}
示例7: create
/**
* @param \Elastica\Document|\Elastica\Script $data
* @param string $opType
* @return \Elastica\Bulk\Action\AbstractDocument
*/
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.");
}
if (null === $opType && $data->hasOpType()) {
$opType = $data->getOpType();
}
//Check that scripts can only be used for updates
if ($data instanceof Script && isset($opType) && $opType != self::OP_TYPE_UPDATE) {
throw new \InvalidArgumentException("When performing an update action, the data needs to be a Document or a Script.");
}
switch ($opType) {
case self::OP_TYPE_DELETE:
$action = new DeleteDocument($data);
break;
case self::OP_TYPE_CREATE:
$action = new CreateDocument($data);
break;
case self::OP_TYPE_UPDATE:
$action = new UpdateDocument($data);
break;
case self::OP_TYPE_INDEX:
default:
$action = new IndexDocument($data);
break;
}
return $action;
}
示例8: addScriptField
/**
* Adds a Script to the query
*
* @param string $name
* @param \Elastica\Script $script Script object
* @return \Elastica\Query Query object
*/
public function addScriptField($name, Script $script)
{
$this->_params['script_fields'][$name] = $script->toArray();
return $this;
}
示例9: setScript
/**
* Sets the script for the term.
*
* @param string $script The script for the term.
*
* @return $this
*/
public function setScript($script)
{
$this->setParam('script', Script::create($script));
return $this;
}
示例10: setScript
/**
* Sets script object
*
* @param \Elastica\Script|string|array $script
* @return \Elastica\Filter\Script
*/
public function setScript($script)
{
$script = Elastica\Script::create($script);
return $this->setParams($script->toArray());
}
示例11: updateDocument
/**
* 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
* @return \Elastica\Response
* @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';
if ($data instanceof Script) {
$requestData = $data->toArray();
} elseif ($data instanceof Document) {
$requestData = array('doc' => $data->getData());
if ($data->getDocAsUpsert()) {
$requestData['doc_as_upsert'] = true;
}
$docOptions = $data->getOptions(array('version', 'version_type', 'routing', 'percolate', 'parent', 'fields', 'retry_on_conflict', 'consistency', 'replication', 'refresh', 'timeout'));
$options += $docOptions;
// set fields param to source only if options was not set before
if ($data instanceof Document && ($data->isAutoPopulate() || $this->getConfigValue(array('document', 'autoPopulate'), false)) && !isset($options['fields'])) {
$options['fields'] = '_source';
}
} else {
$requestData = $data;
}
//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");
$options['retry_on_conflict'] = $retryOnConflict;
}
$response = $this->request($path, Request::POST, $requestData, $options);
if ($response->isOk() && $data instanceof Document && ($data->isAutoPopulate() || $this->getConfigValue(array('document', 'autoPopulate'), false))) {
$responseData = $response->getData();
if (isset($responseData['_version'])) {
$data->setVersion($responseData['_version']);
}
if (isset($options['fields'])) {
$this->_populateDocumentFieldsFromResponse($response, $data, $options['fields']);
}
}
return $response;
}
示例12: addScriptScoreFunction
/**
* 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
* @param float $weight the weight of the function
*
* @return $this
*/
public function addScriptScoreFunction(Script $script, AbstractFilter $filter = null, $weight = null)
{
return $this->addFunction('script_score', $script->toArray(), $filter, $weight);
}
示例13: setScript
/**
* Sets script object.
*
* @param \Elastica\Script|string|array $script
*
* @return $this
*/
public function setScript($script)
{
return $this->setParam('script', Elastica\Script::create($script));
}
示例14: testUpdateDocumentWithoutSource
/**
* @group functional
*/
public function testUpdateDocumentWithoutSource()
{
$index = $this->_createIndex();
$type = $index->getType('elastica_type');
$mapping = new Mapping();
$mapping->setProperties(array('name' => array('type' => 'string', 'store' => 'yes'), 'counter' => array('type' => 'integer', 'store' => 'no')));
$mapping->disableSource();
$type->setMapping($mapping);
$newDocument = new Document();
$newDocument->setAutoPopulate();
$newDocument->set('name', 'Batman');
$newDocument->set('counter', 1);
$type->addDocument($newDocument);
$script = new Script('ctx._source.counter += count; ctx._source.name = name');
$script->setId($newDocument->getId());
$script->setParam('count', 2);
$script->setParam('name', 'robin');
$script->setUpsert($newDocument);
try {
$type->updateDocument($script);
$this->fail('Update request should fail because source is disabled. Fields param is not set');
} catch (ResponseException $e) {
$error = $e->getResponse()->getError();
$this->assertContains('document_source_missing_exception', $error['type']);
}
$newDocument->setFieldsSource();
try {
$type->updateDocument($newDocument);
$this->fail('Update request should fail because source is disabled. Fields param is set to _source');
} catch (ResponseException $e) {
$error = $e->getResponse()->getError();
$this->assertContains('document_source_missing_exception', $error['type']);
}
}
示例15: addFilterScript
/**
* Add a filter with a script to calculate the score
* Only script part of script object is used
*
* @param \Elastica\Filter\AbstractFilter $filter Filter object
* @param \Elastica\Script|string|array $script Script for calculating the score
* @return \Elastica\Query\CustomFiltersScore Current object
*/
public function addFilterScript(AbstractFilter $filter, $script)
{
$script = Script::create($script);
$filterParam = array('filter' => $filter->toArray(), 'script' => $script->getScript());
return $this->addParam('filters', $filterParam);
}