You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`Field`/`Fields` static factory methods and conversion operators no longer return nullable references but throw exceptions instead (`Field`) if the input `string`/`Expression`/`PropertyInfo` argument is `null`.
189
189
190
190
This makes implicit conversions to `Field` more user-friendly without requiring the null-forgiveness operator (`!`) ([read more](index.md#field-name-inference)).
191
191
192
-
#### 8. `FieldValue`
192
+
#### 8. `FieldValue`[8-fieldvalue]
193
193
194
194
**Impact**: Low.
195
195
196
196
Removed `FieldValue.IsLazyDocument`, `FieldValue.IsComposite`, and the corresponding members in the `FieldValue.ValueKind` enum.
197
197
198
198
These values have not been used for some time.
199
199
200
-
#### 9. `FieldSort`
200
+
#### 9. `FieldSort`[9-fieldsort]
201
201
202
202
**Impact**: Low.
203
203
204
204
Removed static `FieldSort.Empty` member.
205
205
206
206
Sorting got reworked which makes this member obsolete ([read more](index.md#sorting)).
##### 3.3. Removal of Side Effects[33-removal-of-side-effects]
220
220
221
221
In 8.x, execution of (most but not all) lambda actions passed to descriptors was deferred until the actual request was made. It was never clear to the user when, and how often an action would be executed.
222
222
223
223
In 9.0, descriptor actions are always executed immediately. This ensures no unforeseen side effects occur if the user-provided lambda action mutates external state (it is still recommended to exclusively use pure/invariant actions). Consequently, the effects of all changes performed by a descriptor method are immediately applied to the wrapped object.
In 8.x, request path parameters like `Index`, `Id`, etc. could only be set by calling the corresponding constructor of the request. Afterwards, there was no way to read or change the current value.
228
228
@@ -238,7 +238,7 @@ var indices = request.Indices;
238
238
request.Indices="my_index";
239
239
```
240
240
241
-
#### 5. Field Name Inference
241
+
#### 5. Field Name Inference[5-field-name-inference]
242
242
243
243
The `Field` type and especially its implicit conversion operations allowed for `null` return values. This led to a poor developer experience, as the null-forgiveness operator (`!`) had to be used frequently without good reason.
The encoding of date, time and duration values in Elasticsearch often varies depending on the context. In addition to string representations in ISO 8601 and RFC 3339 format (always UTC), also Unix timestamps (in seconds, milliseconds, nanoseconds) or simply seconds, milliseconds, nanoseconds are frequently used.
258
258
@@ -266,7 +266,7 @@ There are some places where the Elasticsearch custom date/time/duration types ar
In version 9.0, users are better guided to correctly initialize objects and thus prevent invalid requests.
355
355
@@ -363,7 +363,7 @@ Please note that the use of descriptors still provides the chance to create inco
363
363
364
364
:::
365
365
366
-
#### 10. Serialization
366
+
#### 10. Serialization[10-serialization]
367
367
368
368
Serialization in version 9.0 has been completely overhauled, with a primary focus on robustness and performance. Additionally, initial milestones have been set for future support of native AOT.
0 commit comments