123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- [[breaking_50_java_api_changes]]
- === Java API changes
- ==== Transport client has been moved
- The Java transport client has been moved to its own module which can be referenced using:
- [source,xml]
- -----
- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>transport</artifactId>
- <version>5.0.0-alpha5</version>
- </dependency>
- -----
- The transport client is now created using the following snippet:
- [source,java]
- -----
- TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
- .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
- .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));
- -----
- For more information please see the {javaclient}java-api.html[Java client documentation]
- ==== Count api has been removed
- The deprecated count api has been removed from the Java api, use the search api instead and set size to 0.
- The following call
- [source,java]
- -----
- client.prepareCount(indices).setQuery(query).get();
- -----
- can be replaced with
- [source,java]
- -----
- client.prepareSearch(indices).setSource(new SearchSourceBuilder().size(0).query(query)).get();
- -----
- ==== Suggest api has been removed
- The suggest api has been removed from the Java api, use the suggest option in search api, it has been optimized
- for suggest-only request.
- The following call
- [source,java]
- -----
- client.prepareSuggest(indices).addSuggestion("foo", SuggestBuilders.completionSuggestion("field").text("s")).get();
- -----
- can be replaced with
- [source,java]
- -----
- client.prepareSearch(indices).suggest(new SuggestBuilder().addSuggestion("foo", SuggestBuilders.completionSuggestion("field").text("s"))).get();
- -----
- ==== Elasticsearch will no longer detect logging implementations
- Elasticsearch now logs only to log4j 1.2. Previously if log4j wasn't on the
- classpath it made some effort to degrade to slf4j or java.util.logging. Now it
- will fail to work without the log4j 1.2 api. The log4j-over-slf4j bridge ought
- to work when using the java client, as should log4j 2's log4j-1.2-api. The
- Elasticsearch server now only supports log4j as configured by `logging.yml`
- and will fail if log4j isn't present.
- ==== Groovy dependencies
- In previous versions of Elasticsearch, the Groovy scripting capabilities
- depended on the `org.codehaus.groovy:groovy-all` artifact. In addition
- to pulling in the Groovy language, this pulls in a very large set of
- functionality, none of which is needed for scripting within
- Elasticsearch. Aside from the inherent difficulties in managing such a
- large set of dependencies, this also increases the surface area for
- security issues. This dependency has been reduced to the core Groovy
- language `org.codehaus.groovy:groovy` artifact.
- ==== DocumentAlreadyExistsException removed
- `DocumentAlreadyExistsException` is removed and a `VersionConflictException` is thrown instead (with a better
- error description). This will influence code that use the `IndexRequest.opType()` or `IndexRequest.create()`
- to index a document only if it doesn't already exist.
- ==== Changes to Query Builders
- ===== 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.
- Renaming method to add clauses from `clause(SpanQueryBuilder)` to `addClause(SpanQueryBuilder)`.
- ===== 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.
- Renaming method to add clauses from `clause(SpanQueryBuilder)` to `addClause(SpanQueryBuilder)`.
- ===== 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.
- ===== 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 being 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 equivalent
- 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 MissingQueryBuilder which was deprecated in 2.2.0 is removed. As a replacement use ExistsQueryBuilder
- inside a mustNot() clause. So instead of using `new ExistsQueryBuilder(name)` now use
- `new BoolQueryBuilder().mustNot(new ExistsQueryBuilder(name))`.
- ===== NotQueryBuilder
- The NotQueryBuilder which was deprecated in 2.1.0 is removed. As a replacement use BoolQueryBuilder
- with added mustNot() clause. So instead of using `new NotQueryBuilder(filter)` now use
- `new BoolQueryBuilder().mustNot(filter)`.
- ===== 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`.
- ===== IdsQueryBuilder
- For simplicity, only one way of adding the ids to the existing list (empty by default) is left: `addIds(String...)`
- ===== ShapeBuilders
- `InternalLineStringBuilder` is removed in favour of `LineStringBuilder`, `InternalPolygonBuilder` in favour of PolygonBuilder` and `Ring` has been replaced with `LineStringBuilder`. Also the abstract base classes `BaseLineStringBuilder` and `BasePolygonBuilder` haven been merged with their corresponding implementations.
- ===== RescoreBuilder
- `RecoreBuilder.Rescorer` was merged with `RescoreBuilder`, which now is an abstract superclass. QueryRescoreBuilder currently is its only implementation.
- ===== PhraseSuggestionBuilder
- The inner DirectCandidateGenerator class has been moved out to its own class called DirectCandidateGeneratorBuilder.
- ===== SortBuilders
- The `sortMode` setter in `FieldSortBuilder`, `GeoDistanceSortBuilder` and `ScriptSortBuilder` now
- accept a `SortMode` enum instead of a String constant. Also the getter returns the same enum type.
- ===== SuggestBuilder
- The `setText` method has been changed to `setGlobalText` to make the intent more clear, and a `getGlobalText` method has been added.
- The `addSuggestion` method now required the user specified suggestion name, previously used in the ctor of each suggestion.
- ===== SuggestionBuilder
- The `field` setter has been deleted. Instead the field name needs to be specified as constructor argument.
- ==== SearchSourceBuilder
- All methods which take an `XContentBuilder`, `BytesReference` `Map<String, Object>` or `bytes[]` have been removed in favor of providing the
- relevant builder object for that feature (e.g. `HighlightBuilder`, `AggregationBuilder`, `SuggestBuilder`) . This means that all search requests
- can now be validated at call time which results in much clearer errors.
- The `defaultResourceWindowSize(int)` method has been removed. The window size should be set explicitly on all `RescoreBuilder` objects.
- ==== SearchRequestBuilder
- All methods which take an `XContentBuilder`, `BytesReference` `Map<String, Object>` or `bytes[]` have been removed in favor of providing the
- relevant builder object for that feature (e.g. `HighlightBuilder`, `AggregationBuilder`, `SuggestBuilder`) . This means that all search requests
- can now be validated at call time which results in much clearer errors.
- All highlighter methods have been removed in favor of a single `highlighter(HighlightBuilder)` method.
- The `setExtraSource(SearchSourceBuilder)` method has been removed.
- The `setTemplateSource(String)` and `setTemplateSource(BytesReference)` methods have been removed. Use `setTemplate(Template)` instead.
- `setRescorer(Rescorer)` and `setRescorer(Rescorer, int)` have been removed infavor of `setRescorer(RescoreBuilder)` and `setRescorer(RescoreBuilder, int)`
- ==== SearchRequest
- All `source` methods have been removed in favor of a single `source(SearchSourceBuilder)` method. This means that all search requests can now be validated
- at call time which results in much clearer errors.
- All `extraSource` methods have been removed.
- All `template` methods have been removed in favor of a new Search Template API. A new `SearchTemplateRequest` now accepts a template and
- a `SearchRequest` and must be executed using the new `SearchTemplateAction` action.
- ==== SearchResponse
- Sort values for `string` fields are now return as `java.lang.String` objects rather than `org.elasticsearch.common.text.Text`.
- ==== AggregationBuilder
- All methods which take an `XContentBuilder`, `BytesReference` `Map<String, Object>` or `bytes[]` have been removed in favor of providing the
- relevant builder object (i.e. `subAggregation(AggregationBuilder)` or `subAggregation(PipelineAggregationBuilder)`). This means that all
- requests can now be validated at call time which results in much clearer errors.
- ==== ValidateQueryRequest
- `source(QuerySourceBuilder)`, `source(Map)`, `source(XContentBuilder)`, `source(String)`, `source(byte[])`, `source(byte[], int, int)`,
- `source(BytesReference)` and `source()` have been removed in favor of using `query(QueryBuilder)` and `query()`
- ==== ValidateQueryRequestBuilder
- `setSource()` methods have been removed in favor of using `setQuery(QueryBuilder)`
- ==== ExplainRequest
- `source(QuerySourceBuilder)`, `source(Map)`, `source(BytesReference)` and `source()` have been removed in favor of using
- `query(QueryBuilder)` and `query()`
- ==== ExplainRequestBuilder
- The `setQuery(BytesReference)` method have been removed in favor of using `setQuery(QueryBuilder)`
- ==== ClusterStatsResponse
- Removed the `getMemoryAvailable` method from `OsStats`, which could be previously accessed calling
- `clusterStatsResponse.getNodesStats().getOs().getMemoryAvailable()`.
- ==== setRefresh(boolean) has been removed
- `setRefresh(boolean)` has been removed in favor of `setRefreshPolicy(RefreshPolicy)` because there
- are now three options (NONE, IMMEDIATE, and WAIT_FOR). `setRefresh(IMMEDIATE)` has the same behavior
- as `setRefresh(true)` used to have. See `setRefreshPolicy`'s javadoc for more.
- ==== Remove properties support
- Some Java APIs (e.g., `IndicesAdminClient#setSettings`) would support Java properties syntax
- (line-delimited key=value pairs). This support has been removed.
- === Render Search Template Java API has been removed
- The Render Search Template Java API including `RenderSearchTemplateAction`, `RenderSearchTemplateRequest` and
- `RenderSearchTemplateResponse` has been removed in favor of a new `simulate` option in the Search Template Java API.
- This Search Template API is now included in the `lang-mustache` module and the `simulate` flag must be set on the
- `SearchTemplateRequest` object.
- ==== AnalyzeRequest
- The `tokenFilters(String...)` and `charFilters(String...)` methods have been removed
- in favor of using `addTokenFilter(String)`/`addTokenFilter(Map)` and `addCharFilter(String)`/`addCharFilter(Map)` each filters
- ==== AnalyzeRequestBuilder
- The `setTokenFilters(String...)` and `setCharFilters(String...)` methods have been removed
- in favor of using `addTokenFilter(String)`/`addTokenFilter(Map)` and `addCharFilter(String)`/`addCharFilter(Map)` each filters
|