Releases: elastic/elasticsearch-net
7.0.0-alpha1
First prerelease of 7.x .NET clients
This is the first alpha prerelease of the client with support for Elasticsearch 7.x to Nuget.
The intention in releasing this package now is to elicit feedback from the community on some of the larger changes that have already gone into the 7.x branch, prior to putting out a GA release. Some of the large changes include:
#3493 Change internal serializer to Utf8Json
Following discussion and research with replacing Json.NET as the internal serializer, a fork of Utf8Json is source included into Elasticsearch.NET, replacing both the lowlevel serializer based on SimpleJson, and the high level serializer based on Json.NET. Early research indicated about a 2x performance improvement in serialization.
All unit tests and integration tests are passing with this new serializer, but there are some known existing features of the client that will not yet work:
-
#3654 JSON serialization is never indented, even if
SerializationFormatting.Indented
is specifiedThe serialization routines generated by Utf8Json never generate
IJsonFormatter<T>
that will indent JSON, for performance reasons. We expect to implement this feature in a later release. -
#3655 NEST types cannot be extended by inheritance
With NEST 6.x, additional properties can be included for a type by deriving from that type and annotating these new properties. With the current implementation of serialization with Utf8Json, this approach will not work. We expect to implement this in a later release.
-
Serializer uses
Reflection.Emit
Utf8Json uses
Reflection.Emit
to generate efficient formatters for serializing types that it sees.Reflection.Emit
is not supported on all platforms e.g. UWP, Xamarin.iOS, Xamarin.Android. -
Elasticsearch.Net.DynamicResponse
deserializes JSON arrays toList<object>
SimpleJson deserialized JSON arrays to object[]
, but Utf8Json deserializes them to List<object>
. We believe that that the change to returning List<object>
would be preferred for allocation and performance reasons.
#3658 Removal of high level to low level dispatcher
In 6.x, the process of an API call within NEST looked roughly like
client.Search()
=> Dispatch()
=> LowLevelDispatch.SearchDispatch()
=> lowlevelClient.Search()
=> lowlevelClient.DoRequest()
With 7.x, this process has been changed to remove dispatching to the low level client methods and the middle layer. The new process looks like
client.Search()
=> lowlevelClient.DoRequest()
This means that in the high level client IRequest
now does it own url building, with the upside that the call chain is smaller and allocates a fewer lambda closures. The downside is that there are now 2 url building mechanisms, one in the low level client and a new one in the high level client, but we think this trade off is worth it.
#3213 Refactor geo_shape
queries and geoshapes
Support for geo_shape
queries has existed in NEST for a long time, but each geoshape had its own query type and API method to use to make a geo_shape
query. With 7.x, these have all been refactored into one query, GeoShapeQuery
, that accepts an IGeoShape
, the shape to use within the query.
Feedback
We would love to get feedback from folks trying out the 7.0.0-alpha1 release of the client. If you come across an exception or bug, please open an issue to discuss.
6.6.0
Features & Enhancements
- #3597 Add Update by query rethrottle API
- #3595 Add Delete by query rethrottle API
- #3571 Add ML Info API
- #3569 Add ML Calendar APIs
- #3609 Add Parent Aggregation
- #3591 Add Delete forecast API
- #3584 Add Security Privileges APIs
- #3594 Add support for date histogram format.
- #3558 Add keywords_pattern to Keyword Marker Token Filter
- #3572 Add articles_case to elision token filter
- #3593 Return statistics about forecasts as part of the job stats and usage API
- #3603 Add node count to ML usage response
- #3487 and #3598 BulkAll can now return the document _id's in each response
- #3494 and #3599 Expose ability to set own derived
ConnectionSettingsAwareContractResolver
onJsonNetSerializer
- #3512 and #3601 Expose
_cluster
on search response - #3540 and #3602 Support for Elasticsearch 6.3
"missing"
in Composite Aggregation - #3589 and #3578 Add support for disabling id inference
- #3592 Add fuzzy auto length support for NEST. Thanks @SukharevAndrey! 👍
- #3604 and #3606 Add Score property to Nest.TermVectorTerm class
Bug Fixes
- #3502 and #3600 Reindex attachment honours ingest-attachment field names
- #3551 Allow
keywords_pattern
inkeywords_marker
token filter - #3554 GetManyAsync returns the changed values if they are similar to the time data
- #3575 and #3605 Allow sending
null
values withCompositeKey
andAfter()
functionality - #3611 Use
DateParseHandling.None
when loadingJObject
forMultiGetHit<T>
- #3617 JsonSerializationException: Self referencing loop detected with type 'Nest.Field'. Path '_source.includes'. Thanks @JulianRooze 👍
Misc
- #3613 Reduce string allocations. Thanks @Henr1k80! 👍
- #3557 Use the version number present in the global.json file when generating documentation
View the full list of issues and PRs
6.5.1
Features
- #3572 Add articles_case to elision token filter
Peformance
- #3579 Avoid unnecessary string concatentation. Thanks @Henr1k80 👍
- #3580 Avoid doing multiple dictionary lookups. Thanks @Henr1k80 👍
Bug Fixes
- #3582 ElasticLowLevelClient with
SniffingConnectionPool
fails to make any request due toSniffResponse
deserialization failure - #3586 fix #3582 low level client sniffing
- #3588 fix #3585
VoidResponse
should not be shared
View the full list of issues and PRs
5.6.6
Features
- #3572 Add articles_case to elision token filter
Peformance
- #3579 Avoid unnecessary string concatentation. Thanks @Henr1k80 👍
- #3580 Avoid doing multiple dictionary lookups. Thanks @Henr1k80 👍
Bug Fixes
- #3582 ElasticLowLevelClient with
SniffingConnectionPool
fails to make any request due toSniffResponse
deserialization failure - #3586 fix #3582 low level client sniffing
- #3588 fix #3585
VoidResponse
should not be shared
View the full list of issues and PRs
6.5.0
Features & Enhancements
- #3519 Document how to use a custom authentication header e.g Kerberos
- #3409 Can't create a role with Kibana privileges?
- #3462 Add application privileges to Put Role API
- #3490 Add a format option to docvalue_fields
- #3533 Cross Cluster Replication support
- #3534 Adds support for get_basic_license_status and start_basic_license API's
- #3535 add support for the rollup index caps API
- #3536 add support for the reload secure settings API
- #3537 add support for the get ssl certificates API
- #3545 fix #3544 JsonNetSerializer now also implements IPropertyMappingProvi…
- #3491 Include Format property on Field for Doc Values fields
- #3520 deprecate standard token filter as per elastic/elasticsearch#33468
- #3521 Add support for the auto_date_histogram aggregations
- #3522 support predicate_token_filter elastic/elasticsearch#33431
- #3523 Add support for condition token filter
- #3528 V65/processors
- #3529 Add processor stats to node ingest stats
- #3530 Add support for default pipeline on index settings
- #3531 Add support for source only snapshot repository
Bug Fixes
- #3378 StringResponse.TryGetServerError parse error on 401 response
- #3402 Can't set refresh_interval to default value (null)
- #3411 Cross Cluster support in IndexName prevents the use of
::
- #3458 Fix IndexName Parse
- #3460 Missing Enum Value in Nest.UnassignedInformationReason
- #3461 Add missing enum values for UnassignedInformationReason
- #3465 Allow null refresh_interval to be passed
- #3466 try/catch when attempting to deserialize ServerError from response
- #3548 Add backwards compatible overloads for Field format
- #3546 fix #3505 daterange default DateTime should not serialize
View the full list of issues and PRs
6.4.2
Bug fixes
#3543 Include format
in Field
, Fields
, Infer.Field
FieldsDescriptor
in a backwards binary compatible way
6.4.1 introduced an additional string format
property to the constructors of Field
, Fields
, Infer.Field
and FieldsDescriptor
. Unfortunately, these were added in a binary breaking change, and slipped through into the 6.4.1 release. One of the core tenets of the client is to maintain binary compatibility across a major version of the client.
6.4.2 introduces format
in a binary backward compatible way, fixing the issue with 6.4.1. The 6.4.1 package has been unlisted in nuget, and we recommend upgrading to the latest version of the client as soon as possible.
6.4.1
- Include Format property on Field for Doc Values fields #3491
- Bump Newtonsoft.Json to 12 on 6.x #3509
The rest of the commits are all related to housekeeping, moving FAKE build tasks to dedicated dotnet tools
View the full list of issues and PRs
5.6.5
Bug Fixes
- #3378 StringResponse.TryGetServerError parse error on 401 response
- #3458 Fix IndexName Parse
- #3460 Missing Enum Value in Nest.UnassignedInformationReason
- #3461 Add missing enum values for UnassignedInformationReason
- #3465 Allow null refresh_interval to be passed
- #3507 Fix #3501 bump Json.NET dependency on 5.x
The rest of the commits all relate to housekeeping moving FAKE targets to dedicated dotnet tools.
View the full list of issues and PRs
6.4.0
Features & Enhancements
- #3319 Support indexed_chars_field in ingest attachment processor plugin
- #3414 Add support for the SQL API's
- #3417 Add support for weighted average aggregation
- #3419 Add support for moving function aggregation
- #3420 add support for missing_bucket on composite aggregation as per https:…
- #3425 Feature/multiplexing token filter
- #3426 add support for remove duplicates token filter
- #3427 add support for the char_group tokenizer
- #3428 add lenient to synonym and synonym_graph token filters
- #3429 add mode to keep_types token filter
- #3430 Feature/nori plugin
- #3431 add split_queries_on_whitespace to keyword property mappings
- #3433 Add support for index_phrases
- #3434 Add support for alias property mapping
- #3435 Allow context to be specified on the painless execute API
- #3436 Add support for ignore_unmapped on geo sorts and added median as sort…
- #3437 Add uuid to indices stats
- #3439 Add KeyValueProcessor tests and add support for trimming properties
- #3440 add support for the bytes processor
- #3441 Add ignore_missing to the remove processor
- #3442 Add support for indexed_chars_field on the AttachmentProcessor
- #3443 cluster_uuid is now also returned at the root of the cluster_state re…
- #3444 Support 2nd level field collapsing
- #3445 return user on watch record
- #3446 make sure we parse the bucket key on ip range as expected now that it…
- #3447 Feature/alias is write index
- #3448 rollup job crud apis
- #3449 Add support for the rollup search API
- #3450 Add rollup capibilities API
Uncategorized
- #3424 Refactor/analysis tests
- #3438 Processors can now tested in isolation and guarded in isolation with …
Deprecations
- #3416 obsolete copy_settings as of 6.4 it will no longer allow false and wi…
View the full list of issues and PRs
6.3.1
Bug Fixes
- #3405 Fix #3404 bulk all improvements
- #3403 JoinField serialization issue when using
JsonNetSerializer