Merge branch 'master' into feature/search-request-refactoring
This commit is contained in:
commit
05c003188b
|
@ -97,3 +97,168 @@ Previously, there were three settings for the ping timeout: `discovery.zen.initi
|
|||
`discovery.zen.ping.timeout` and `discovery.zen.ping_timeout`. The former two have been removed and
|
||||
the only setting key for the ping timeout is now `discovery.zen.ping_timeout`. The default value for
|
||||
ping timeouts remains at three seconds.
|
||||
|
||||
=== Plugins
|
||||
|
||||
Plugins implementing custom queries need to implement the `fromXContent(QueryParseContext)` method in their
|
||||
`QueryParser` subclass rather than `parse`. This method will take care of parsing the query from `XContent` format
|
||||
into an intermediate query representation that can be streamed between the nodes in binary format, effectively the
|
||||
query object used in the java api. Also, the query parser needs to implement the `getBuilderPrototype` method that
|
||||
returns a prototype of the `NamedWriteable` query, which allows to deserialize an incoming query by calling
|
||||
`readFrom(StreamInput)` against it, which will create a new object, see usages of `Writeable`. The `QueryParser`
|
||||
also needs to declare the generic type of the query that it supports and it's able to parse.
|
||||
The query object can then transform itself into a lucene query through the new `toQuery(QueryShardContext)` method,
|
||||
which returns a lucene query to be executed on the data node.
|
||||
|
||||
Similarly, plugins implementing custom score functions need to implement the `fromXContent(QueryParseContext)`
|
||||
method in their `ScoreFunctionParser` subclass rather than `parse`. This method will take care of parsing
|
||||
the function from `XContent` format into an intermediate function representation that can be streamed between
|
||||
the nodes in binary format, effectively the function object used in the java api. Also, the query parser needs
|
||||
to implement the `getBuilderPrototype` method that returns a prototype of the `NamedWriteable` function, which
|
||||
allows to deserialize an incoming function by calling `readFrom(StreamInput)` against it, which will create a
|
||||
new object, see usages of `Writeable`. The `ScoreFunctionParser` also needs to declare the generic type of the
|
||||
function that it supports and it's able to parse. The function object can then transform itself into a lucene
|
||||
function through the new `toFunction(QueryShardContext)` method, which returns a lucene function to be executed
|
||||
on the data node.
|
||||
|
||||
=== Java-API
|
||||
|
||||
==== BoostingQueryBuilder
|
||||
|
||||
Removed setters for mandatory positive/negative query. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null.
|
||||
|
||||
==== SpanContainingQueryBuilder
|
||||
|
||||
Removed setters for mandatory big/little inner span queries. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null. Updated
|
||||
static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== SpanOrQueryBuilder
|
||||
|
||||
Making sure that query contains at least one clause by making initial clause mandatory
|
||||
in constructor.
|
||||
|
||||
==== SpanNearQueryBuilder
|
||||
|
||||
Removed setter for mandatory slop parameter, needs to be set in constructor now. Also
|
||||
making sure that query contains at least one clause by making initial clause mandatory
|
||||
in constructor. Updated the static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== SpanNotQueryBuilder
|
||||
|
||||
Removed setter for mandatory include/exclude span query clause, needs to be set in constructor now.
|
||||
Updated the static factory methods in QueryBuilders and tests accordingly.
|
||||
|
||||
==== SpanWithinQueryBuilder
|
||||
|
||||
Removed setters for mandatory big/little inner span queries. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null. Updated
|
||||
static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== QueryFilterBuilder
|
||||
|
||||
Removed the setter `queryName(String queryName)` since this field is not supported
|
||||
in this type of query. Use `FQueryFilterBuilder.queryName(String queryName)` instead
|
||||
when in need to wrap a named query as a filter.
|
||||
|
||||
==== WrapperQueryBuilder
|
||||
|
||||
Removed `wrapperQueryBuilder(byte[] source, int offset, int length)`. Instead simply
|
||||
use `wrapperQueryBuilder(byte[] source)`. Updated the static factory methods in
|
||||
QueryBuilders accordingly.
|
||||
|
||||
==== QueryStringQueryBuilder
|
||||
|
||||
Removed ability to pass in boost value using `field(String field)` method in form e.g. `field^2`.
|
||||
Use the `field(String, float)` method instead.
|
||||
|
||||
==== Operator
|
||||
|
||||
Removed the enums called `Operator` from `MatchQueryBuilder`, `QueryStringQueryBuilder`,
|
||||
`SimpleQueryStringBuilder`, and `CommonTermsQueryBuilder` in favour of using the enum
|
||||
defined in `org.elasticsearch.index.query.Operator` in an effort to consolidate the
|
||||
codebase and avoid duplication.
|
||||
|
||||
==== queryName and boost support
|
||||
|
||||
Support for `queryName` and `boost` has been streamlined to all of the queries. That is
|
||||
a breaking change till queries get sent over the network as serialized json rather
|
||||
than in `Streamable` format. In fact whenever additional fields are added to the json
|
||||
representation of the query, older nodes might throw error when they find unknown fields.
|
||||
|
||||
==== InnerHitsBuilder
|
||||
|
||||
InnerHitsBuilder now has a dedicated addParentChildInnerHits and addNestedInnerHits methods
|
||||
to differentiate between inner hits for nested vs. parent / child documents. This change
|
||||
makes the type / path parameter mandatory.
|
||||
|
||||
==== MatchQueryBuilder
|
||||
|
||||
Moving MatchQueryBuilder.Type and MatchQueryBuilder.ZeroTermsQuery enum to MatchQuery.Type.
|
||||
Also reusing new Operator enum.
|
||||
|
||||
==== MoreLikeThisQueryBuilder
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder.Item#id(String id)`, `Item#doc(BytesReference doc)`,
|
||||
`Item#doc(XContentBuilder doc)`. Use provided constructors instead.
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder#addLike` in favor of texts and/or items beeing provided
|
||||
at construction time. Using arrays there instead of lists now.
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder#addUnlike` in favor to using the `unlike` methods
|
||||
which take arrays as arguments now rather than the lists used before.
|
||||
|
||||
The deprecated `docs(Item... docs)`, `ignoreLike(Item... docs)`,
|
||||
`ignoreLike(String... likeText)`, `addItem(Item... likeItems)` have been removed.
|
||||
|
||||
==== GeoDistanceQueryBuilder
|
||||
|
||||
Removing individual setters for lon() and lat() values, both values should be set together
|
||||
using point(lon, lat).
|
||||
|
||||
==== GeoDistanceRangeQueryBuilder
|
||||
|
||||
Removing setters for to(Object ...) and from(Object ...) in favour of the only two allowed input
|
||||
arguments (String, Number). Removing setter for center point (point(), geohash()) because parameter
|
||||
is mandatory and should already be set in constructor.
|
||||
Also removing setters for lt(), lte(), gt(), gte() since they can all be replaced by equivallent
|
||||
calls to to/from() and inludeLower()/includeUpper().
|
||||
|
||||
==== GeoPolygonQueryBuilder
|
||||
|
||||
Require shell of polygon already to be specified in constructor instead of adding it pointwise.
|
||||
This enables validation, but makes it necessary to remove the addPoint() methods.
|
||||
|
||||
==== MultiMatchQueryBuilder
|
||||
|
||||
Moving MultiMatchQueryBuilder.ZeroTermsQuery enum to MatchQuery.ZeroTermsQuery.
|
||||
Also reusing new Operator enum.
|
||||
|
||||
Removed ability to pass in boost value using `field(String field)` method in form e.g. `field^2`.
|
||||
Use the `field(String, float)` method instead.
|
||||
|
||||
==== MissingQueryBuilder
|
||||
|
||||
The two individual setters for existence() and nullValue() were removed in favour of
|
||||
optional constructor settings in order to better capture and validate their interdependent
|
||||
settings at construction time.
|
||||
|
||||
==== TermsQueryBuilder
|
||||
|
||||
Remove the setter for `termsLookup()`, making it only possible to either use a TermsLookup object or
|
||||
individual values at construction time. Also moving individual settings for the TermsLookup (lookupIndex,
|
||||
lookupType, lookupId, lookupPath) to the separate TermsLookup class, using constructor only and moving
|
||||
checks for validation there. Removed `TermsLookupQueryBuilder` in favour of `TermsQueryBuilder`.
|
||||
|
||||
==== FunctionScoreQueryBuilder
|
||||
|
||||
`add` methods have been removed, all filters and functions must be provided as constructor arguments by
|
||||
creating an array of `FunctionScoreQueryBuilder.FilterFunctionBuilder` objects, containing one element
|
||||
for each filter/function pair.
|
||||
|
||||
`scoreMode` and `boostMode` can only be provided using corresponding enum members instead
|
||||
of string values: see `FilterFunctionScoreQuery.ScoreMode` and `CombineFunction`.
|
||||
|
||||
`CombineFunction.MULT` has been renamed to `MULTIPLY`.
|
||||
|
||||
|
|
|
@ -1,170 +0,0 @@
|
|||
[[breaking-changes query-refactoring]]
|
||||
== Breaking changes on the query-refactoring branch
|
||||
|
||||
This section discusses changes that are breaking to the current rest or java-api
|
||||
on the query-refactoring feature branch.
|
||||
|
||||
=== Plugins
|
||||
|
||||
Plugins implementing custom queries need to implement the `fromXContent(QueryParseContext)` method in their
|
||||
`QueryParser` subclass rather than `parse`. This method will take care of parsing the query from `XContent` format
|
||||
into an intermediate query representation that can be streamed between the nodes in binary format, effectively the
|
||||
query object used in the java api. Also, the query parser needs to implement the `getBuilderPrototype` method that
|
||||
returns a prototype of the `NamedWriteable` query, which allows to deserialize an incoming query by calling
|
||||
`readFrom(StreamInput)` against it, which will create a new object, see usages of `Writeable`. The `QueryParser`
|
||||
also needs to declare the generic type of the query that it supports and it's able to parse.
|
||||
The query object can then transform itself into a lucene query through the new `toQuery(QueryShardContext)` method,
|
||||
which returns a lucene query to be executed on the data node.
|
||||
|
||||
Similarly, plugins implementing custom score functions need to implement the `fromXContent(QueryParseContext)`
|
||||
method in their `ScoreFunctionParser` subclass rather than `parse`. This method will take care of parsing
|
||||
the function from `XContent` format into an intermediate function representation that can be streamed between
|
||||
the nodes in binary format, effectively the function object used in the java api. Also, the query parser needs
|
||||
to implement the `getBuilderPrototype` method that returns a prototype of the `NamedWriteable` function, which
|
||||
allows to deserialize an incoming function by calling `readFrom(StreamInput)` against it, which will create a
|
||||
new object, see usages of `Writeable`. The `ScoreFunctionParser` also needs to declare the generic type of the
|
||||
function that it supports and it's able to parse. The function object can then transform itself into a lucene
|
||||
function through the new `toFunction(QueryShardContext)` method, which returns a lucene function to be executed
|
||||
on the data node.
|
||||
|
||||
=== Java-API
|
||||
|
||||
==== BoostingQueryBuilder
|
||||
|
||||
Removed setters for mandatory positive/negative query. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null.
|
||||
|
||||
==== SpanContainingQueryBuilder
|
||||
|
||||
Removed setters for mandatory big/little inner span queries. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null. Updated
|
||||
static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== SpanOrQueryBuilder
|
||||
|
||||
Making sure that query contains at least one clause by making initial clause mandatory
|
||||
in constructor.
|
||||
|
||||
==== SpanNearQueryBuilder
|
||||
|
||||
Removed setter for mandatory slop parameter, needs to be set in constructor now. Also
|
||||
making sure that query contains at least one clause by making initial clause mandatory
|
||||
in constructor. Updated the static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== SpanNotQueryBuilder
|
||||
|
||||
Removed setter for mandatory include/exclude span query clause, needs to be set in constructor now.
|
||||
Updated the static factory methods in QueryBuilders and tests accordingly.
|
||||
|
||||
==== SpanWithinQueryBuilder
|
||||
|
||||
Removed setters for mandatory big/little inner span queries. Both arguments now have
|
||||
to be supplied at construction time already and have to be non-null. Updated
|
||||
static factory methods in QueryBuilders accordingly.
|
||||
|
||||
==== QueryFilterBuilder
|
||||
|
||||
Removed the setter `queryName(String queryName)` since this field is not supported
|
||||
in this type of query. Use `FQueryFilterBuilder.queryName(String queryName)` instead
|
||||
when in need to wrap a named query as a filter.
|
||||
|
||||
==== WrapperQueryBuilder
|
||||
|
||||
Removed `wrapperQueryBuilder(byte[] source, int offset, int length)`. Instead simply
|
||||
use `wrapperQueryBuilder(byte[] source)`. Updated the static factory methods in
|
||||
QueryBuilders accordingly.
|
||||
|
||||
==== QueryStringQueryBuilder
|
||||
|
||||
Removed ability to pass in boost value using `field(String field)` method in form e.g. `field^2`.
|
||||
Use the `field(String, float)` method instead.
|
||||
|
||||
==== Operator
|
||||
|
||||
Removed the enums called `Operator` from `MatchQueryBuilder`, `QueryStringQueryBuilder`,
|
||||
`SimpleQueryStringBuilder`, and `CommonTermsQueryBuilder` in favour of using the enum
|
||||
defined in `org.elasticsearch.index.query.Operator` in an effort to consolidate the
|
||||
codebase and avoid duplication.
|
||||
|
||||
==== queryName and boost support
|
||||
|
||||
Support for `queryName` and `boost` has been streamlined to all of the queries. That is
|
||||
a breaking change till queries get sent over the network as serialized json rather
|
||||
than in `Streamable` format. In fact whenever additional fields are added to the json
|
||||
representation of the query, older nodes might throw error when they find unknown fields.
|
||||
|
||||
==== InnerHitsBuilder
|
||||
|
||||
InnerHitsBuilder now has a dedicated addParentChildInnerHits and addNestedInnerHits methods
|
||||
to differentiate between inner hits for nested vs. parent / child documents. This change
|
||||
makes the type / path parameter mandatory.
|
||||
|
||||
==== MatchQueryBuilder
|
||||
|
||||
Moving MatchQueryBuilder.Type and MatchQueryBuilder.ZeroTermsQuery enum to MatchQuery.Type.
|
||||
Also reusing new Operator enum.
|
||||
|
||||
==== MoreLikeThisQueryBuilder
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder.Item#id(String id)`, `Item#doc(BytesReference doc)`,
|
||||
`Item#doc(XContentBuilder doc)`. Use provided constructors instead.
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder#addLike` in favor of texts and/or items beeing provided
|
||||
at construction time. Using arrays there instead of lists now.
|
||||
|
||||
Removed `MoreLikeThisQueryBuilder#addUnlike` in favor to using the `unlike` methods
|
||||
which take arrays as arguments now rather than the lists used before.
|
||||
|
||||
The deprecated `docs(Item... docs)`, `ignoreLike(Item... docs)`,
|
||||
`ignoreLike(String... likeText)`, `addItem(Item... likeItems)` have been removed.
|
||||
|
||||
==== GeoDistanceQueryBuilder
|
||||
|
||||
Removing individual setters for lon() and lat() values, both values should be set together
|
||||
using point(lon, lat).
|
||||
|
||||
==== GeoDistanceRangeQueryBuilder
|
||||
|
||||
Removing setters for to(Object ...) and from(Object ...) in favour of the only two allowed input
|
||||
arguments (String, Number). Removing setter for center point (point(), geohash()) because parameter
|
||||
is mandatory and should already be set in constructor.
|
||||
Also removing setters for lt(), lte(), gt(), gte() since they can all be replaced by equivallent
|
||||
calls to to/from() and inludeLower()/includeUpper().
|
||||
|
||||
==== GeoPolygonQueryBuilder
|
||||
|
||||
Require shell of polygon already to be specified in constructor instead of adding it pointwise.
|
||||
This enables validation, but makes it necessary to remove the addPoint() methods.
|
||||
|
||||
==== MultiMatchQueryBuilder
|
||||
|
||||
Moving MultiMatchQueryBuilder.ZeroTermsQuery enum to MatchQuery.ZeroTermsQuery.
|
||||
Also reusing new Operator enum.
|
||||
|
||||
Removed ability to pass in boost value using `field(String field)` method in form e.g. `field^2`.
|
||||
Use the `field(String, float)` method instead.
|
||||
|
||||
==== MissingQueryBuilder
|
||||
|
||||
The two individual setters for existence() and nullValue() were removed in favour of
|
||||
optional constructor settings in order to better capture and validate their interdependent
|
||||
settings at construction time.
|
||||
|
||||
==== TermsQueryBuilder
|
||||
|
||||
Remove the setter for `termsLookup()`, making it only possible to either use a TermsLookup object or
|
||||
individual values at construction time. Also moving individual settings for the TermsLookup (lookupIndex,
|
||||
lookupType, lookupId, lookupPath) to the separate TermsLookup class, using constructor only and moving
|
||||
checks for validation there. Removed `TermsLookupQueryBuilder` in favour of `TermsQueryBuilder`.
|
||||
|
||||
==== FunctionScoreQueryBuilder
|
||||
|
||||
`add` methods have been removed, all filters and functions must be provided as constructor arguments by
|
||||
creating an array of `FunctionScoreQueryBuilder.FilterFunctionBuilder` objects, containing one element
|
||||
for each filter/function pair.
|
||||
|
||||
`scoreMode` and `boostMode` can only be provided using corresponding enum members instead
|
||||
of string values: see `FilterFunctionScoreQuery.ScoreMode` and `CombineFunction`.
|
||||
|
||||
`CombineFunction.MULT` has been renamed to `MULTIPLY`.
|
||||
|
|
@ -109,12 +109,11 @@ accepts it), or it can be specified as the `time_zone` parameter:
|
|||
"range" : {
|
||||
"timestamp" : {
|
||||
"gte": "2015-01-01 00:00:00", <1>
|
||||
"lte": "now",
|
||||
"lte": "now", <2>
|
||||
"time_zone": "+01:00"
|
||||
}
|
||||
}
|
||||
}
|
||||
--------------------------------------------------
|
||||
<1> This date will be converted to `2014-12-31T23:00:00 UTC`.
|
||||
|
||||
|
||||
<2> `now` is not affected by the `time_zone` parameter (dates must be stored as UTC).
|
||||
|
|
Loading…
Reference in New Issue