diff --git a/docs/reference/release-notes.asciidoc b/docs/reference/release-notes.asciidoc index a0b06aadd9646..d13e91a6dfe68 100644 --- a/docs/reference/release-notes.asciidoc +++ b/docs/reference/release-notes.asciidoc @@ -7,6 +7,7 @@ This section summarizes the changes in each release. * <> +* <> * <> * <> * <> @@ -74,6 +75,7 @@ This section summarizes the changes in each release. -- include::release-notes/8.16.0.asciidoc[] +include::release-notes/8.15.3.asciidoc[] include::release-notes/8.15.2.asciidoc[] include::release-notes/8.15.1.asciidoc[] include::release-notes/8.15.0.asciidoc[] diff --git a/docs/reference/release-notes/8.15.3.asciidoc b/docs/reference/release-notes/8.15.3.asciidoc new file mode 100644 index 0000000000000..029da1af740e5 --- /dev/null +++ b/docs/reference/release-notes/8.15.3.asciidoc @@ -0,0 +1,47 @@ +[[release-notes-8.15.3]] +== {es} version 8.15.3 + +Also see <>. + +[[bug-8.15.3]] +[float] +=== Bug fixes + +Aggregations:: +* Don't validate internal stats if they are empty {es-pull}113846[#113846] (issue: {es-issue}113811[#113811]) +* Fix `needsScore` computation in `GlobalOrdCardinalityAggregator` {es-pull}113129[#113129] (issue: {es-issue}112975[#112975]) + +Authentication:: +* Enables cluster state role mapper, to include ECK operator-defined role mappings in role resolution {es-pull}114337[#114337] + +ES|QL:: +* ES|QL: Ensure minimum capacity for `PlanStreamInput` caches {es-pull}114116[#114116] +* ES|QL: Skip CASE function from `InferIsNotNull` rule checks {es-pull}113123[#113123] (issue: {es-issue}112704[#112704]) +* [ESQL] Fix init value in max float aggregation {es-pull}113699[#113699] +* [ESQL] Support datetime data type in Least and Greatest functions {es-pull}113961[#113961] + +Machine Learning:: +* Fix check on E5 model platform compatibility {es-pull}113437[#113437] (issue: {es-issue}113577[#113577]) +* Handle parsing ingest processors where definition is not a object {es-pull}113697[#113697] (issue: {es-issue}113615[#113615]) +* [ML][backport] Warn for model load failures if they have a status code <500 {es-pull}113410[#113410] +* [M] Fix error message formatting {es-pull}113266[#113266] + +Search:: +* Fix analyzed wildcard query in simple_query_string when disjunctions is empty {es-pull}114264[#114264] (issue: {es-issue}114185[#114185]) +* Fix collapse interaction with stored fields {es-pull}112761[#112761] (issue: {es-issue}112646[#112646]) + +[[enhancement-8.15.3]] +[float] +=== Enhancements + +Machine Learning:: +* Write downloaded model parts async {es-pull}111684[#111684] + +[[upgrade-8.15.3]] +[float] +=== Upgrades + +Snapshot/Restore:: +* Upgrade protobufer to 3.25.5 {es-pull}113869[#113869] + + diff --git a/docs/reference/release-notes/highlights.asciidoc b/docs/reference/release-notes/highlights.asciidoc index 664b006b9e8e1..96795c351a2bb 100644 --- a/docs/reference/release-notes/highlights.asciidoc +++ b/docs/reference/release-notes/highlights.asciidoc @@ -102,6 +102,31 @@ index codec best compression. (#112665) {es-pull}112857[#112857] +[discrete] +[[esql_introduce_per_agg_filter]] +=== ESQL: Introduce per agg filter +Add support for aggregation scoped filters that work dynamically on the +data in each group. + +[source,esql] +---- +| STATS success = COUNT(*) WHERE 200 <= code AND code < 300, + redirect = COUNT(*) WHERE 300 <= code AND code < 400, + client_err = COUNT(*) WHERE 400 <= code AND code < 500, + server_err = COUNT(*) WHERE 500 <= code AND code < 600, + total_count = COUNT(*) +---- + +Implementation wise, the base AggregateFunction has been extended to +allow a filter to be passed on. This is required to incorporate the +filter as part of the aggregate equality/identity which would fail with +the filter as an external component. +As part of the process, the serialization for the existing aggregations +had to be fixed so AggregateFunction implementations so that it +delegates to their parent first. + +{es-pull}113735[#113735] + // end::notable-highlights[] @@ -131,3 +156,44 @@ field is first combined into a single geometry before performing the predicate c {es-pull}112063[#112063] +[discrete] +[[enhance_sort_push_down_to_lucene_to_cover_references_to_fields_st_distance_function]] +=== Enhance SORT push-down to Lucene to cover references to fields and ST_DISTANCE function +The most used and likely most valuable geospatial search query in Elasticsearch is the sorted proximity search, +finding items within a certain distance of a point of interest and sorting the results by distance. +This has been possible in ES|QL since 8.15.0, but the sorting was done in-memory, not pushed down to Lucene. +Now the sorting is pushed down to Lucene, which results in a significant performance improvement. + +Queries that perform both filtering and sorting on distance are supported. For example: + +[source,esql] +---- +FROM test +| EVAL distance = ST_DISTANCE(location, TO_GEOPOINT("POINT(37.7749, -122.4194)")) +| WHERE distance < 1000000 +| SORT distance ASC, name DESC +| LIMIT 10 +---- + +In addition, the support for sorting on EVAL expressions has been extended to cover references to fields: + +[source,esql] +---- +FROM test +| EVAL ref = field +| SORT ref ASC +| LIMIT 10 +---- + +{es-pull}112938[#112938] + +[discrete] +[[cross_cluster_search_telemetry]] +=== Cross-cluster search telemetry +The cross-cluster search telemetry is collected when cross-cluster searches +are performed, and is returned as "ccs" field in `_cluster/stats` output. +It also add a new parameter `include_remotes=true` to the `_cluster/stats` API +which will collect data from connected remote clusters. + +{es-pull}113825[#113825] +