Commit Graph

86883 Commits

Author SHA1 Message Date
Ievgen Sorokopud 550cddf5ee
Granting `kibana_system` reserved role access to "all" privileges to `.adhoc.alerts*` and `.internal.adhoc.alerts*` indices (#127321)
* Granting `kibana_system` reserved role access to "all" privileges to `.adhoc.alerts*` and `.internal.adhoc.alerts*` indices

* Update docs/changelog/127321.yaml

* [CI] Auto commit changes from spotless

* Replace `"all"` with the specific privileges for the `kibana_system` role

* Fix tests

* Fix CI

* Updated privileges

* Updated privileges

Add `"maintenance"` to allow `refresh=true` option on bulk API call.

* Remove redundant code

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2025-06-03 15:37:52 +02:00
Charlotte Hoblik 38fb46d366
Add Connectors release notes for 9.0.2 (#128555) 2025-06-03 15:24:06 +02:00
elasticsearchmachine 00064bcf17 Mute org.elasticsearch.index.store.DirectIOIT testDirectIOUsed #128829 2025-06-03 23:20:56 +10:00
Samiul Monir fa152a9182
Unit test to validate copy_to for semantic_text field in esql (#128795)
* Unit test to validate copy_to for semantic_text field in esql

* Fix the unit test

* fix test for single node
2025-06-03 09:04:26 -04:00
Carlos Delgado dc3d515226
ESQL - full text functions verifier tests refactor (#128775) 2025-06-03 15:59:57 +03:00
Pawan Kartik 3f1e1b3c30
Handle the indices pattern `["*", "-*"]` when grouping indices by cluster name (#128610)
The auth code injects the pattern `["*", "-*"]` to specify that it's okay to return an empty response because user's patterns did not match any remote clusters. However, we fail to recognise this specific pattern and `groupIndices()` eventually associates it with the local cluster. This causes Elasticsearch to fallback to the local cluster unknowingly and return its details back to the user even though the user hasn't requested any info about the local cluster.
2025-06-03 13:51:36 +01:00
Luigi Dell'Aquila d1d7302574
ES|QL: Add support for LOOKUP JOIN on aliases (#128519) 2025-06-03 14:23:49 +03:00
Krishna Chaitanya Reddy Burri 186972c285
Add rapid7_insightvm.asset_vulnerability source indices to kibana_system role permissions (#128661) 2025-06-03 16:16:16 +05:30
Mridula e14109958e
Clarify Javadoc for L2ScoreNormalizer (l2_norm) (#128808)
* propgating retrievers to inner retrievers

* Java doc fixed

* Cleaned up

* Update docs/changelog/128808.yaml

* Enhanced comment as stated by the copilot

* Delete docs/changelog/128808.yaml
2025-06-03 13:18:21 +03:00
Rene Groeschke 8ca308bb30
Cleanup renovate config after default in branch name (#128817) 2025-06-03 12:11:18 +02:00
Craig Taverner 11f0c5526a
ES|QL Support for ST_GEOHASH, ST_GEOTILE and ST_GEOHEX (#125143)
Added support for the three primary scalar grid functions:
* `ST_GEOHASH(geom, precision)`
* `ST_GEOTILE(geom, precision)`
* `ST_GEOHEX(geom, precision)`

As well as versions of these three that take an optional `geo_shape` boundary (must be a `BBOX` ie. `Rectangle`).

And also supporting conversion functions that convert the grid-id from long to string and back to long.

This work represents the core of the feature to support geo-grid aggregations in ES|QL.
2025-06-03 11:49:34 +02:00
Johannes Fredén 2696451275
Add retry for AccessDeniedException in AbstractFileWatchingService (#128653)
* Unmute testSymlinkUpdateTriggerReload

* Add retry for AccessDeniedException in AbstractFileWatchingService

* Update docs/changelog/128653.yaml
2025-06-03 11:36:58 +02:00
Mary Gouseti 9764730d49
Remove include_default query param from get data stream options. (#128730)
Initially we added to the `include_defaults` to the get data stream
options REST API as it was used in the lifecycler API; however, we
decided to simplify it and not use it. We remove it now before it gets
adopted.
2025-06-03 18:15:42 +10:00
Niels Bauman f988611691
React more prompty to task cancellation while waiting for the cluster to unblock (#128737)
Instead of waiting for the next run of the `ClusterStateObserver` (which
might be arbitrarily far in the future, but bound by the timeout if one
is set), we notify the listener immediately that the task has been
cancelled. While doing so, we ensure we invoke the listener only once.

Fixes #117971
2025-06-03 11:00:20 +03:00
Ievgen Degtiarenko a84c2519aa
Script for indexing micro benchmark results (#128557) 2025-06-03 09:27:59 +02:00
Lloyd 70368c26e5
Add transport version support for IDP_CUSTOM_SAML_ATTRIBUTES_ADDED_8_19 (#128798) 2025-06-03 15:45:18 +09:00
elasticsearchmachine d77351c557 Mute org.elasticsearch.index.codec.vectors.es818.ES818BinaryQuantizedVectorsFormatTests testSimpleOffHeapSizeFSDir #128800 2025-06-03 15:19:00 +10:00
elasticsearchmachine 79accdea77 Mute org.elasticsearch.index.codec.vectors.es818.ES818HnswBinaryQuantizedVectorsFormatTests testSimpleOffHeapSizeFSDir #128799 2025-06-03 15:18:52 +10:00
Lloyd 2625200341
Implement SAML custom attributes support for Identity Provider (#128176)
* Implement SAML custom attributes support for Identity Provider

This commit adds support for custom attributes in SAML single sign-on requests
in the Elasticsearch X-Pack Identity Provider plugin. This feature allows
passage of custom key-value attributes in SAML requests and responses.

Key components:
- Added SamlInitiateSingleSignOnAttributes class for holding attributes
- Added validation for null and empty attribute keys
- Updated request and response objects to handle attributes
- Modified authentication flow to process attributes
- Added test coverage to validate attributes functionality

The implementation follows Elasticsearch patterns with robust validation
and serialization mechanisms, while maintaining backward compatibility.

* Add test for SAML custom attributes in authentication response

This commit adds a comprehensive test that verifies SAML custom attributes
are correctly handled in the authentication response builder. The test ensures:

1. Custom attributes with single and multiple values are properly included
2. The response with custom attributes is still correctly signed
3. The XML schema validation still passes with custom attributes
4. We can locate and verify individual attribute values in the response

This provides critical test coverage for the SAML custom attributes
feature implementation.

* Add backward compatibility overload for SuccessfulAuthenticationResponseMessageBuilder.build

This commit adds an overloaded build method that accepts only two parameters
(user and authenticationState) and forwards the call to the three-parameter
version with null for the customAttributes parameter. This maintains backward
compatibility with existing code that doesn't use custom attributes.

This fixes a compilation error in ServerlessSsoIT.java which was still using
the two-parameter method signature.

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* Add validation for duplicate SAML attribute keys

This commit enhances the SAML attributes implementation by adding validation
for duplicate attribute keys. When the same attribute key appears multiple
times in a request, the validation will now fail with a clear error message.

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* Refactor SAML attributes validation to follow standard patterns

This commit improves the SAML attributes validation by:

1. Adding a dedicated validate() method to SamlInitiateSingleSignOnAttributes
   that centralizes validation logic in one place
2. Moving validation from constructor to dedicated method for better error reporting
3. Checking both for null/empty keys and duplicate keys in the validate() method
4. Updating SamlInitiateSingleSignOnRequest to use the new validation method
5. Adding comprehensive tests for the new validation approach

These changes follow standard Elasticsearch validation patterns, making the
code more maintainable and consistent with the rest of the codebase.

* Update docs/changelog/128176.yaml

* Improve SAML response validation in identity provider tests

Enhanced the testCustomAttributesInIdpInitiatedSso test to properly validate
both SAML response structure and custom attributes using DOM parsing and XPath.

Key improvements:
- Validate SAML Response/Assertion elements exist
- Precisely validate custom attributes (department, region) and their values
- Use namespace-aware XML parsing for resilience to format changes

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* Simplify SAML attributes representation using JSON object/Map structure

Also, replace internal Attribute class list with a simpler Map<String, List<String>>
structure

This change:

- Removes the redundant Attribute class and replaces it with a direct Map
  implementation for storing attribute key-value pairs
- Eliminates the duplicate "attributes" nesting in the JSON structure
- Simplifies attribute validation without needing duplicate key checking

- Updates all related tests and integration points to work with the new structure

Before:

```js
{
  // others
  "attributes": {
    "attributes": [
      {
        "key": "department",
        "values": ["engineering", "product"]
      }
    ]
  }
}

After:

```js
{
  // other
  "attributes": {
    "department": ["engineering", "product"]
  }
}
```

(Verified by spitting out JSON entity in IdentityProviderAuthenticationIT.generateSamlResponseWithAttributes
... saw `{"entity_id":"ec:123456:abcdefg","acs":"https://sp1.test.es.elasticsearch.org/saml/acs","attributes":{"department":["engineering","product"],"region":["APJ"]}}`)

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* * Fix up toString dangling quote.

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* * Remove attributes from Response object.

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* * Remove friendly name.
* Make attributes map final in SamlInitiateSingleSignOnAttributes

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* * Cleanup serdes by using existing utils in the ES codebase

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* Touchup comment

Signed-off-by: lloydmeta <lloydmeta@gmail.com>

* Update x-pack/plugin/identity-provider/src/test/java/org/elasticsearch/xpack/idp/action/SamlInitiateSingleSignOnRequestTests.java

Co-authored-by: Tim Vernum <tim@adjective.org>

* Add transport-version checks

---------

Signed-off-by: lloydmeta <lloydmeta@gmail.com>
Co-authored-by: Tim Vernum <tim@adjective.org>
2025-06-03 05:26:41 +03:00
Dave Pifke 434166248e
Change default for vector.rescoring.directio to false (#128784)
On serverless (and potentially elsewhere), direct IO is not available, which can cause BBQ shards to fail to read with org.apache.lucene.CorruptIndexException when this setting is true.
2025-06-02 17:34:40 -06:00
Mayya Sharipova 080a0cdd89
Enable sort optimization on int, short and byte fields (#127968)
Before this PR sorting on integer, short and byte fields types used
SortField.Type.LONG. This made sort optimization impossible for these
field types.

This PR uses SortField.Type.INT for integer, short and byte fields. This
enables sort optimization.

There are several caveats with changing sort type that are addressed: -
Before mixed sort on integer and long fields was automatically
supported, as both field types used SortField.TYPE.LONG. Now when
merging results from different shards, we need to convert sort to LONG
and results to long values. - Similar for collapsing when there is mixed
INT and LONG sort types. - Index sorting. Similarly, before for index
sorting on integer field, SortField.Type.LONG was used. This sort type
is stored in the index writer config on disk and can't be modified. Now
when providing sortField() for index sorting, we need to account for
index version: for older indices return sort with SortField.Type.LONG
and for new indices return SortField.Type.INT.

---

There is only 1 change that  may be considered not backwards compatible:
Before if an integer field was [missing a
value](https://www.elastic.co/docs/reference/elasticsearch/rest-apis/sort-search-results#_missing_values)
, it sort values will return Long.MAX_VALUE in a search response. With
this integer, it sort valeu will return Integer.MAX_VALUE.  But I think
this change is ok, as in our documentation, we don't provide information
what value will be returned, we just say it will be sorted last. 

---

Also closes #127965 (as same type validation in added for collapse
queries)
2025-06-03 07:50:11 +10:00
Benjamin Trent d75daa7155
Remove unnecessary knn param boxing and simplyfing somethings (#128693)
some refactoring I noticed recently that we can do. Now k is always
provided we can remove boxing and this simplifies some logic. 

Additionally, modernizes and simplifies some tests. No behavior change
in this PR.
2025-06-03 07:45:55 +10:00
Ben Chaplin 13bce60be9
Fix inner hits + aggregations concurrency bug (#128036)
Fork InnerHitSubContext instances before source is fetched in 
aggregations to prevent inter-segment race conditions.

Relates to #122419
2025-06-02 16:44:53 -04:00
Brian Seeders 4762111b44
[release-notes] Fix tests and make it easy to regenerate output after changes (#128781) 2025-06-02 16:35:18 -04:00
Patrick Doyle c633345a4d
Initial TestPolicyManager implementation (#128700)
* Initial TestPolicyManager implementation

* The forbidden APIs check is not messing around
2025-06-02 13:08:17 -04:00
Benjamin Trent c28e01ecf4
Adding forbidden API check for buggy range query behavior (#128671) (#128765)
This adds the buggy functions to forbidden API check. Will remove once
Lucene is updated.

Related #128671
2025-06-03 02:26:40 +10:00
elasticsearchmachine bbd65c69ba Mute org.elasticsearch.xpack.rank.rrf.LinearRankClientYamlTestSuiteIT test {yaml=linear/10_linear_retriever/should normalize initial scores with l2_norm} #128774 2025-06-03 01:46:21 +10:00
elasticsearchmachine a8b820a732 Mute org.elasticsearch.gradle.internal.release.ReleaseNotesGeneratorTest generateFile_index_noHighlights_rendersCorrectMarkup #128773 2025-06-03 01:40:07 +10:00
elasticsearchmachine 72c0cf0123 Mute org.elasticsearch.gradle.internal.release.ReleaseNotesGeneratorTest generateFile_index_rendersCorrectMarkup #128772 2025-06-03 01:40:01 +10:00
Jim Ferenczi e7565b1f05
Optimize sparse vector stats collection (#128740)
This change improves the performance of sparse vector statistics gathering by using the document count of terms directly, rather than relying on the field name field to compute stats.
By avoiding per-term disk/network reads and instead leveraging statistics already loaded into leaf readers at index opening, we expect to significantly reduce overhead.

Relates to #128583
2025-06-02 17:05:55 +02:00
Martijn van Groningen 041c42a779
Remove use_default_lucene_postings_format feature flag (#128509)
Remove use_default_lucene_postings_format feature flag and
let the IndexMode decide whether to default lucene postings instead of checking for standard index mode.

The `Lucene101PostingsFormat` is now used for a while behind a feature flag. Regressions were found by were fixed via apache/lucene#14511. The `Lucene101PostingsFormat` is now a better trade off when the index mode is standard.
2025-06-02 17:04:08 +02:00
Rene Groeschke 2467c910cc
[Build] Add windows aarch support for daemon jvms (#128755) 2025-06-03 01:01:47 +10:00
Brian Seeders 40b486a6b9
[release-notes] Move 'coming' applies_to to the correct spot 2025-06-02 10:36:10 -04:00
Tanguy Leroux 9b2252afb2
Fix computation of last block size in Azure concurrent multipart uploads (#128746)
Last part size is wrongly computed to 0 when the last part's length is
exactly equal to the size of a part. Would have probably be caught by an
existing assertion.

Relates ES-11815
2025-06-03 00:11:16 +10:00
Mridula 81fba27b6b
Add l2_norm normalization support to linear retriever (#128504)
* New l2 normalizer added

* L2 score normaliser is registered

* test case added to the yaml

* Documentation added

* Resolved checkstyle issues

* Update docs/changelog/128504.yaml

* Update docs/reference/elasticsearch/rest-apis/retrievers.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Score 0 test case added to check for corner cases

* Edited the markdown doc description

* Pruned the comment

* Renamed the variable

* Added comment to the class

* Unit tests added

* Spotless and checkstyle fixed

* Fixed build failure

* Fixed the forbidden test

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-02 14:59:03 +01:00
Pat Whelan 09ccd91b53
[Transform] Delete indices after test (#128690)
The tests sometimes pass and then fail to clean up the indicies
indirectly, so they will now directly delete the indices they created
for the test.

Fix #128577
2025-06-02 16:56:15 +03:00
Benjamin Trent 2a44166a2c
Applying Apache Lucene fix: https://github.com/apache/lucene/pull/14732 (#128671)
* Applying Apache Lucene fix: https://github.com/apache/lucene/pull/14732

* fixing test

* fixing annot
2025-06-02 09:50:25 -04:00
Mike Pellegrini adda402a4c
Fix minmax normalizer handling of single-doc result sets (#128689) 2025-06-02 09:39:44 -04:00
Iván Cea Fontenla d597e50117
Use StringBuilder instead of StringBuffer (#128665) 2025-06-02 14:29:22 +03:00
Liam Thompson 5a4c42819f
[DOCS] Move applies_to to sit under heading in ES release notes (#128731)
^^
2025-06-02 12:16:43 +02:00
Ioana Tagirta abf5f00413
Document boost option for match_phrase (#128738) 2025-06-02 11:57:03 +02:00
Moritz Mack cdd208704c
Add initial bcUpgradeTask (#128588) 2025-06-02 11:21:51 +02:00
Jim Ferenczi 83126135fa
Avoid unnecessary determinization in index pattern conflict checks (#128362)
Starting with Lucene 10, `CharacterRunAutomaton` is no longer determinized automatically.
In Elasticsearch 9, we adapted to this by eagerly determinizing automatons early (via `Regex#simpleMatchToAutomaton`).
However, this introduced  regression: operations like index template conflict checks, which only require intersection testing, now pay the cost of determinization—an expensive step that wasn’t needed before. In some cases, especially when many wildcard patterns are involved, determinization can even fail due to state explosion.

This change removes the unnecessary determinization, restoring the pre-9.0 behavior and allowing valid index templates with many patterns to be registered again.
2025-06-02 10:39:35 +02:00
Carlos Delgado b6880808d5
Refactor full text functions optimizer tests to add coverage to all functions (#128611) 2025-06-02 11:02:49 +03:00
Ievgen Degtiarenko 03173af0c7
Start polling after data computation is started (#128575) 2025-06-02 09:34:06 +02:00
George Wallace 4eca31756f
Update dissect-processor.md (#128708) 2025-06-02 08:49:45 +02:00
Ievgen Degtiarenko c14037985d
Handle quotes in gradle arguments (#128548) 2025-06-02 08:17:25 +02:00
Yang Wang aa0397fb49
Update shardGenerations for all indices on snapshot finalization (#128650)
If an index is deleted after a snapshot has written its shardGenerations 
file but before the snapshot is finalized, we exclude this index from the 
snapshot because its indexMetadata is no longer available. However, 
the shardGenerations file is still valid in that it is the latest copy with all 
necessary information despite it containing an extra snapshot entry. 
This is OK. Instead of dropping this shardGenerations file, this PR 
changes to carry it forward by updating RepositoryData and relevant 
in-progress snapshots so that the next finalization builds on top of this one.

Co-authored-by: David Turner <david.turner@elastic.co>
2025-06-02 15:09:04 +10:00
Yang Wang b2867481de
[CI] Fix testClientsLifeCycleForSingleProject (#128718)
More robust test for closed clients holder. Also changes
IllegalStateException to AlreadyClosedException for both closed manager
and holder.

Resolves: #128707
2025-06-02 09:53:57 +10:00
elasticsearchmachine df16eee42d Mute org.elasticsearch.packaging.test.DockerTests test040JavaUsesTheOsProvidedKeystore #128230 2025-06-02 08:46:06 +10:00