Skip to content

Commit baaeec6

Browse files
authored
Merge branch 'main' into remote-enrich-after-lookup-join
2 parents 59e02b4 + e0296d0 commit baaeec6

File tree

57 files changed

+1194
-404
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1194
-404
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.gradle.internal.transport
11+
12+
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
13+
import org.gradle.testkit.runner.BuildResult
14+
import org.gradle.testkit.runner.TaskOutcome
15+
16+
class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest {
17+
def javaResource(String project, String path, String content) {
18+
file("${project}/src/main/resources/${path}").withWriter { writer ->
19+
writer << content
20+
}
21+
}
22+
23+
def javaSource(String project, String packageName, String className, String imports, String content) {
24+
String packageSlashes = packageName.replace('.', '/')
25+
file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer ->
26+
writer << """
27+
package ${packageName};
28+
${imports}
29+
public class ${className} {
30+
${content}
31+
}
32+
"""
33+
}
34+
}
35+
36+
def namedTransportVersion(String name, String ids) {
37+
javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids)
38+
}
39+
40+
def unreferencedTransportVersion(String name, String id) {
41+
javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id)
42+
}
43+
44+
def definedAndUsedTransportVersion(String name, String ids) {
45+
return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}")
46+
}
47+
48+
def definedAndUsedTransportVersion(String name, String ids, String classname) {
49+
javaSource("myserver", "org.elasticsearch", classname, "", """
50+
static final TransportVersion usage = TransportVersion.fromName("${name}");
51+
""")
52+
namedTransportVersion(name, ids)
53+
}
54+
55+
def latestTransportVersion(String branch, String name, String id) {
56+
javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}")
57+
}
58+
59+
def validateReferencesFails(String project) {
60+
return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail()
61+
}
62+
63+
def validateDefinitionsFails() {
64+
return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail()
65+
}
66+
67+
def assertReferencesFailure(BuildResult result, String project, String expectedOutput) {
68+
result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED
69+
assertOutputContains(result.output, expectedOutput)
70+
}
71+
72+
def assertDefinitionsFailure(BuildResult result, String expectedOutput) {
73+
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED
74+
assertOutputContains(result.output, expectedOutput)
75+
}
76+
77+
def setup() {
78+
configurationCacheCompatible = false
79+
internalBuild()
80+
settingsFile << """
81+
include ':myserver'
82+
include ':myplugin'
83+
"""
84+
file("gradle.properties") << """
85+
org.elasticsearch.transport.definitionsProject=:myserver
86+
"""
87+
88+
file("myserver/build.gradle") << """
89+
apply plugin: 'java-library'
90+
apply plugin: 'elasticsearch.transport-version-references'
91+
apply plugin: 'elasticsearch.transport-version-resources'
92+
"""
93+
namedTransportVersion("existing_91", "8012000")
94+
namedTransportVersion("existing_92", "8123000,8012001")
95+
unreferencedTransportVersion("initial_9_0_0", "8000000")
96+
latestTransportVersion("9.2", "existing_92", "8123000")
97+
latestTransportVersion("9.1", "existing_92", "8012001")
98+
// a mock version of TransportVersion, just here so we can compile Dummy.java et al
99+
javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """
100+
public static TransportVersion fromName(String name) {
101+
return null;
102+
}
103+
""")
104+
javaSource("myserver", "org.elasticsearch", "Dummy", "", """
105+
static final TransportVersion existing91 = TransportVersion.fromName("existing_91");
106+
static final TransportVersion existing92 = TransportVersion.fromName("existing_92");
107+
""")
108+
109+
file("myplugin/build.gradle") << """
110+
apply plugin: 'java-library'
111+
apply plugin: 'elasticsearch.transport-version-references'
112+
113+
dependencies {
114+
implementation project(":myserver")
115+
}
116+
"""
117+
118+
setupLocalGitRepo()
119+
execute("git checkout -b main")
120+
execute("git checkout -b test")
121+
}
122+
}
Lines changed: 11 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -10,124 +10,9 @@
1010
package org.elasticsearch.gradle.internal.transport
1111

1212

13-
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
14-
import org.gradle.testkit.runner.BuildResult
1513
import org.gradle.testkit.runner.TaskOutcome
1614

17-
class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest {
18-
19-
/**
20-
*
21-
* @param project
22-
* @param path
23-
* @param content
24-
* @return
25-
*/
26-
def javaResource(String project, String path, String content) {
27-
file("${project}/src/main/resources/${path}").withWriter { writer ->
28-
writer << content
29-
}
30-
}
31-
32-
def javaSource(String project, String packageName, String className, String imports, String content) {
33-
String packageSlashes = packageName.replace('.', '/')
34-
file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer ->
35-
writer << """
36-
package ${packageName};
37-
${imports}
38-
public class ${className} {
39-
${content}
40-
}
41-
"""
42-
}
43-
}
44-
45-
def namedTransportVersion(String name, String ids) {
46-
javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids)
47-
}
48-
49-
def initialTransportVersion(String name, String id) {
50-
javaResource("myserver", "transport/definitions/initial/" + name + ".csv", id)
51-
}
52-
53-
def definedAndUsedTransportVersion(String name, String ids) {
54-
return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}")
55-
}
56-
57-
def definedAndUsedTransportVersion(String name, String ids, String classname) {
58-
javaSource("myserver", "org.elasticsearch", classname, "", """
59-
static final TransportVersion usage = TransportVersion.fromName("${name}");
60-
""")
61-
namedTransportVersion(name, ids)
62-
}
63-
64-
def latestTransportVersion(String branch, String name, String id) {
65-
javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}")
66-
}
67-
68-
def validateReferencesFails(String project) {
69-
return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail()
70-
}
71-
72-
def validateDefinitionsFails() {
73-
return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail()
74-
}
75-
76-
def assertReferencesFailure(BuildResult result, String project, String expectedOutput) {
77-
result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED
78-
assertOutputContains(result.output, expectedOutput)
79-
}
80-
81-
def assertDefinitionsFailure(BuildResult result, String expectedOutput) {
82-
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED
83-
assertOutputContains(result.output, expectedOutput)
84-
}
85-
86-
def setup() {
87-
configurationCacheCompatible = false
88-
internalBuild()
89-
settingsFile << """
90-
include ':myserver'
91-
include ':myplugin'
92-
"""
93-
file("gradle.properties") << """
94-
org.elasticsearch.transport.definitionsProject=:myserver
95-
"""
96-
97-
file("myserver/build.gradle") << """
98-
apply plugin: 'java-library'
99-
apply plugin: 'elasticsearch.transport-version-references'
100-
apply plugin: 'elasticsearch.transport-version-resources'
101-
"""
102-
namedTransportVersion("existing_91", "8012000")
103-
namedTransportVersion("existing_92", "8123000,8012001")
104-
initialTransportVersion("initial_9_0_0", "8000000")
105-
latestTransportVersion("9.2", "existing_92", "8123000")
106-
latestTransportVersion("9.1", "existing_92", "8012001")
107-
// a mock version of TransportVersion, just here so we can compile Dummy.java et al
108-
javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """
109-
public static TransportVersion fromName(String name) {
110-
return null;
111-
}
112-
""")
113-
javaSource("myserver", "org.elasticsearch", "Dummy", "", """
114-
static final TransportVersion existing91 = TransportVersion.fromName("existing_91");
115-
static final TransportVersion existing92 = TransportVersion.fromName("existing_92");
116-
""")
117-
118-
file("myplugin/build.gradle") << """
119-
apply plugin: 'java-library'
120-
apply plugin: 'elasticsearch.transport-version-references'
121-
122-
dependencies {
123-
implementation project(":myserver")
124-
}
125-
"""
126-
127-
setupLocalGitRepo()
128-
execute("git checkout -b main")
129-
execute("git checkout -b test")
130-
}
15+
class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTest {
13116

13217
def "test setup works"() {
13318
when:
@@ -303,4 +188,14 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest {
303188
assertDefinitionsFailure(result, "Transport version definition file " +
304189
"[myserver/src/main/resources/transport/definitions/named/patch.csv] has patch version 8015001 as primary id")
305190
}
191+
192+
def "unreferenced directory is optional"() {
193+
given:
194+
file("myserver/src/main/resources/transport/unreferenced/initial_9_0_0.csv").delete()
195+
file("myserver/src/main/resources/transport/unreferenced").deleteDir()
196+
when:
197+
def result = gradleRunner(":myserver:validateTransportVersionDefinitions").build()
198+
then:
199+
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.SUCCESS
200+
}
306201
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,13 @@ public void validateTransportVersions() throws IOException {
107107
// now load all definitions, do some validation and record them by various keys for later quick lookup
108108
// NOTE: this must run after loading referenced names and existing definitions
109109
// NOTE: this is sorted so that the order of cross validation is deterministic
110-
for (String subDir : List.of("initial", "named")) {
111-
try (var definitionsStream = Files.list(definitionsDir.resolve(subDir)).sorted()) {
112-
for (var definitionFile : definitionsStream.toList()) {
113-
recordAndValidateDefinition(readDefinitionFile(definitionFile));
110+
for (String subDirName : List.of("unreferenced", "named")) {
111+
Path subDir = definitionsDir.resolve(subDirName);
112+
if (Files.isDirectory(subDir)) {
113+
try (var definitionsStream = Files.list(subDir).sorted()) {
114+
for (var definitionFile : definitionsStream.toList()) {
115+
recordAndValidateDefinition(readDefinitionFile(definitionFile));
116+
}
114117
}
115118
}
116119
}

docs/changelog/132959.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 132959
2+
summary: Adds the `v_hamming` function for calculating the Hamming distance between two dense vectors
3+
area: ES|QL
4+
type: feature
5+
issues: [132056]

docs/changelog/133064.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 133064
2+
summary: Mark LOOKUP JOIN as `ExecutesOn.Any` by default
3+
area: ES|QL
4+
type: bug
5+
issues: []
Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,65 @@
11
# Elasticsearch
22

3-
This section contains reference information for {{es}} and index management features.
3+
{{es}} is a distributed search and analytics engine, scalable data store, and vector database built on Apache Lucene. It’s optimized for speed and relevance on production-scale workloads. Use Elasticsearch to search, index, store, and analyze data of all shapes and sizes in near real time.
44

5-
To learn more about {{es}} features and how to get started, refer to the [{{es}}](docs-content://solutions/search.md) documentation.
5+
## Quick links
66

7-
For more details about query and scripting languages, check these sections:
8-
* [Query languages](../query-languages/index.md)
9-
* [Scripting languages](../scripting-languages/index.md)
7+
:::{dropdown} Useful links
108

11-
{{es}} also provides the following REST APIs:
9+
- [REST API Reference](./rest-apis/index.md)
10+
- [API Conventions](./rest-apis/api-conventions.md)
11+
- [Settings Reference](https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html)
12+
- [Breaking Changes](https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes.html)
13+
- [Compatibility](./rest-apis/compatibility.md)
14+
- [Glossary](https://www.elastic.co/guide/en/elasticsearch/reference/current/glossary.html)
15+
- [Plugin Development](https://www.elastic.co/guide/en/elasticsearch/plugins/current/index.html)
16+
- [Supported Platforms](https://www.elastic.co/support/matrix#matrix_jvm)
17+
:::
1218

13-
* [{{es}} API](https://www.elastic.co/docs/api/doc/elasticsearch)
14-
* [{{es}} Serverless API](https://www.elastic.co/docs/api/doc/elasticsearch-serverless)
19+
## Setup and architecture
20+
21+
- [Set up Elasticsearch](docs-content://deploy-manage/deploy/self-managed/installing-elasticsearch.md)
22+
- [Secure the Elastic Stack](docs-content://deploy-manage/security.md)
23+
- [Upgrade Elasticsearch](docs-content://deploy-manage/upgrade/deployment-or-cluster.md)
24+
- [Set up a cluster for high availability](docs-content://deploy-manage/tools.md)
25+
- [Stack monitoring](docs-content://deploy-manage/monitor/stack-monitoring.md)
26+
- [Troubleshooting](docs-content://troubleshoot/elasticsearch.md)
27+
- [Optimizations](docs-content://deploy-manage/production-guidance/optimize-performance.md)
28+
29+
## Working with data
30+
31+
- [Adding data to Elasticsearch](docs-content://manage-data/ingest.md)
32+
- [Connectors](https://www.elastic.co/docs/reference/search-connectors)
33+
- [Web crawler](https://www.elastic.co/search-labs/blog/elastic-open-crawler-release)
34+
- [Data streams](docs-content://manage-data/data-store/data-streams.md)
35+
- [Ingest pipelines](docs-content://manage-data/ingest/transform-enrich/ingest-pipelines.md)
36+
- [Mapping](docs-content://manage-data/data-store/mapping.md)
37+
- [Data management](docs-content://manage-data/lifecycle.md)
38+
- [Downsampling](docs-content://manage-data/lifecycle.md)
39+
- [Snapshot and restore](docs-content://deploy-manage/tools/snapshot-and-restore.md)
40+
41+
## Search and analytics
42+
43+
{{es}} is the search and analytics engine that powers the {{stack}}.
44+
45+
- [Get started](docs-content://get-started/index.md)
46+
- [Learn how to search your data](docs-content://solutions/search/querying-for-search.md)
47+
- Query data programmatically: use query languages to run advanced search, filtering, or analytics
48+
- [Query DSL](docs-content://explore-analyze/query-filter/languages/querydsl.md): full JSON-based query language
49+
- [ES|QL](docs-content://explore-analyze/query-filter/languages/esql.md): fast, SQL-like language with piped syntax
50+
- [EQL](docs-content://explore-analyze/query-filter/languages/eql.md): for event-based time series data, such as logs, metrics, and traces
51+
- [SQL](docs-content://explore-analyze/query-filter/languages/sql.md): SQL-style queries on Elasticsearch data
52+
- [Search applications](docs-content://solutions/search/search-applications.md)
53+
- [Aggregations](docs-content://explore-analyze/query-filter/aggregations.md)
54+
- [Geospatial analysis](docs-content://explore-analyze/geospatial-analysis.md)
55+
- [Machine Learning](docs-content://explore-analyze/machine-learning.md)
56+
- [Alerting](docs-content://explore-analyze/alerts-cases.md)
57+
58+
## APIs and developer docs
59+
60+
- [REST APIs](https://www.elastic.co/docs/reference/elasticsearch/rest-apis)
61+
- [{{es}} Clients](https://www.elastic.co/docs/reference/elasticsearch-clients)
62+
- [Painless](https://www.elastic.co/docs/reference/scripting-languages/painless/painless)
63+
- [Plugins and integrations](https://www.elastic.co/docs/reference/elasticsearch/plugins)
64+
- [Search Labs](https://www.elastic.co/search-labs)
65+
- [Notebook examples](https://www.elastic.co/search-labs/tutorials/examples)

0 commit comments

Comments
 (0)