Skip to content

Commit

Permalink
Added Reindex and deprecated CrossIndex (ruflin#1311) (ruflin#1315)
Browse files Browse the repository at this point in the history
added changelog entry and asserts to config test

added SpanOrTest

added SpanMulti

span functions in dsl query updated

removed unnecessary attributes

reverted docker ip range

Changelog update

Changelog update
  • Loading branch information
giovannialbero1992 authored and Marek Hernik committed Jul 24, 2017
1 parent 3b111b2 commit cdd9710
Show file tree
Hide file tree
Showing 14 changed files with 932 additions and 10 deletions.
4 changes: 3 additions & 1 deletion CHANGELOG.md
Expand Up @@ -12,17 +12,19 @@ All notable changes to this project will be documented in this file based on the

### Added

- Added `\Elastica\Query\Span*` for proximity searches [#304](https://github.com/ruflin/Elastica/issues/304)
- Parameter `filter_path` for response filtering (e.g. `$index->search($query, ['filter_path' => 'hits.hits._source'])`)
- Add support for Health parameters for Cluster\Health endpoint (new prop : delayed_unassigned_shards, number_of_pending_tasks, number_of_in_flight_fetch, task_max_waiting_in_queue_millis, active_shards_percent_as_number)
- Add support for querystring in Type. this allow to use `update_all_types` in type mapping in order to resolve conflicts between fields in different types. [Conflicts between fields in different types](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#merging-conflicts)
- Added `\Elastica\Query\ParentId` to avoid join with parent documents [#1287](https://github.com/ruflin/Elastica/issues/1287)
- Added `\Elastica\Reindex` for reindexing between indices [#1311](https://github.com/ruflin/Elastica/issues/1311)

### Improvements

- Added support for `other_bucket` and `other_bucket_key` paramters on `Elastica\Aggregation\Filters`

### Deprecated

- Deprecated `Tool\CrossIndex` use `\Elastica\Reindex` instead [#1311](https://github.com/ruflin/Elastica/issues/1311)

## [Unreleased](https://github.com/ruflin/Elastica/compare/5.1.0...5.2.0)

Expand Down
46 changes: 46 additions & 0 deletions lib/Elastica/Query/SpanMulti.php
@@ -0,0 +1,46 @@
<?php
namespace Elastica\Query;

use Elastica\Exception\InvalidException;

/**
* SpanMulti query.
*
* @author Marek Hernik <marek.hernik@gmail.com>
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html
*/
class SpanMulti extends SpanQuery
{
/**
* Constructs a SpanMulti query object.
*
* @param AbstractQuery $match OPTIONAL
*/
public function __construct(AbstractQuery $match = null)
{
if ($match) {
$this->setMatch($match);
}
}

/**
* Set match part to query.
*
* @param AbstractQuery $match
*
* @throws InvalidException
*
* @return $this
*/
public function setMatch(AbstractQuery $match)
{
if (!in_array(get_class($match), [Wildcard::class, Fuzzy::class, Prefix::class, Regexp::class])) {
throw new InvalidException(
'Invalid parameter. Has to be instance of WildcardQuery or FuzzyQuery or PrefixQuery od RegexpQuery'
);
}

return $this->setParams(['match' => $match]);
}
}
71 changes: 71 additions & 0 deletions lib/Elastica/Query/SpanNear.php
@@ -0,0 +1,71 @@
<?php
namespace Elastica\Query;

use Elastica\Exception\InvalidException;

/**
* SpanNear query.
*
* @author Marek Hernik <marek.hernik@gmail.com>
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html
*/
class SpanNear extends SpanQuery
{
/**
* Constructs a SpanNear query object.
*
* @param SpanQuery[] $clauses OPTIONAL
* @param int $slop OPTIONAL maximum proximity
* @param bool $inOrder OPTIONAL true if order of searched clauses is important
*/
public function __construct(array $clauses = [], $slop = 1, $inOrder = false)
{
if (!empty($clauses)) {
foreach ($clauses as $clause) {
if (!is_subclass_of($clause, SpanQuery::class)) {
throw new InvalidException(
'Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery'
);
}
}
}
$this->setParams(['clauses' => $clauses]);
$this->setSlop($slop);
$this->setInOrder($inOrder);
}

/**
* @param int $slop
*/
public function setSlop($slop)
{
$this->setParam('slop', $slop);
}

/**
* @param bool $inOrder
*/
public function setInOrder($inOrder)
{
$this->setParam('in_order', $inOrder);
}

/**
* Add clause part to query.
*
* @param SpanQuery $clause
*
* @throws InvalidException If not valid query
*
* @return $this
*/
public function addClause($clause)
{
if (!is_subclass_of($clause, SpanQuery::class)) {
throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery');
}

return $this->addParam('clauses', $clause);
}
}
51 changes: 51 additions & 0 deletions lib/Elastica/Query/SpanOr.php
@@ -0,0 +1,51 @@
<?php
namespace Elastica\Query;

use Elastica\Exception\InvalidException;

/**
* SpanOr query.
*
* @author Marek Hernik <marek.hernik@gmail.com>
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html
*/
class SpanOr extends SpanQuery
{
/**
* Constructs a SpanOr query object.
*
* @param SpanQuery[] $clauses OPTIONAL
*/
public function __construct(array $clauses = [])
{
if (!empty($clauses)) {
foreach ($clauses as $clause) {
if (!is_subclass_of($clause, SpanQuery::class)) {
throw new InvalidException(
'Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery'
);
}
}
}
$this->setParams(['clauses' => $clauses]);
}

/**
* Add clause part to query.
*
* @param SpanQuery $clause
*
* @throws InvalidException If not valid query
*
* @return $this
*/
public function addClause($clause)
{
if (!is_subclass_of($clause, SpanQuery::class)) {
throw new InvalidException('Invalid parameter. Has to be array or instance of Elastica\Query\SpanQuery');
}

return $this->addParam('clauses', $clause);
}
}
14 changes: 14 additions & 0 deletions lib/Elastica/Query/SpanQuery.php
@@ -0,0 +1,14 @@
<?php
namespace Elastica\Query;

/**
* Span query.
*
* @author Marek Hernik <marek.hernik@gmail.com>
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/span-queries.html
*/
class SpanQuery extends AbstractQuery
{

}
38 changes: 38 additions & 0 deletions lib/Elastica/Query/SpanTerm.php
@@ -0,0 +1,38 @@
<?php
namespace Elastica\Query;

/**
* SpanTerm query.
*
* @author Marek Hernik <marek.hernik@gmail.com>
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html
*/
class SpanTerm extends SpanQuery
{
/**
* Constructs the SpanTerm query object.
*
* @param string $field
* @param string $value
* @param float $boost OPTIONAL Boost value (default = 1)
*/
public function __construct($field, $value, $boost = 1.0)
{
$this->setRawTerm($field, $value, $boost);
}

/**
* Sets the query expression for a key with its boost value.
*
* @param string $field
* @param string $value
* @param float $boost
*
* @return $this
*/
public function setRawTerm($field, $value, $boost = 1.0)
{
return $this->setParam($field, ['value' => $value, 'boost' => $boost]);
}
}
38 changes: 29 additions & 9 deletions lib/Elastica/QueryBuilder/DSL/Query.php
Expand Up @@ -26,6 +26,10 @@
use Elastica\Query\Range;
use Elastica\Query\Regexp;
use Elastica\Query\SimpleQueryString;
use Elastica\Query\SpanMulti;
use Elastica\Query\SpanNear;
use Elastica\Query\SpanOr;
use Elastica\Query\SpanTerm;
use Elastica\Query\Term;
use Elastica\Query\Terms;
use Elastica\Query\Type;
Expand Down Expand Up @@ -365,17 +369,23 @@ public function span_first()
*/
public function span_multi_term()
{
throw new NotImplementedException();
return new SpanMulti();
}

/**
* span near query.
*
* @param array $clauses
* @param int $slop
* @param bool $inOrder
*
* @return SpanNear
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html
*/
public function span_near()
public function span_near($clauses = [], $slop = 1, $inOrder = false)
{
throw new NotImplementedException();
return new SpanNear($clauses, $slop, $inOrder);
}

/**
Expand All @@ -389,23 +399,33 @@ public function span_not()
}

/**
* span or query.
* span_or query.
*
* @param array $clauses
*
* @return SpanOr
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-or-query.html
*/
public function span_or()
public function span_or($clauses = [])
{
throw new NotImplementedException();
return new SpanOr($clauses);
}

/**
* span term query.
* span_term query.
*
* @param string $key
* @param string $value
* @param float $boost
*
* @return SpanTerm
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html
*/
public function span_term()
public function span_term($key = '', $value = null, $boost = 1.0)
{
throw new NotImplementedException();
return new SpanTerm($key, $value, $boost);
}

/**
Expand Down

0 comments on commit cdd9710

Please sign in to comment.