Skip to content

Commit 66e73b4

Browse files
committed
Merge branch 'main' of github.com:elastic/elasticsearch into inference-eis-completion-support
2 parents 922499b + b3974fc commit 66e73b4

File tree

968 files changed

+51636
-6383
lines changed

Some content is hidden

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

968 files changed

+51636
-6383
lines changed

benchmarks/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ tasks.named("run").configure {
9191
systemProperty 'es.nativelibs.path', TestUtil.getTestLibraryPath(file("../libs/native/libraries/build/platform/").toString())
9292
}
9393

94+
tasks.named('test').configure {
95+
if (buildParams.getRuntimeJavaVersion().map{ it.majorVersion.toInteger() }.get() >= 21) {
96+
jvmArgs '--add-modules=jdk.incubator.vector'
97+
}
98+
}
99+
94100
spotless {
95101
java {
96102
// IDEs can sometimes run annotation processors that leave files in

benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/QueryPlanningBenchmark.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import java.util.LinkedHashMap;
5353
import java.util.Locale;
5454
import java.util.Map;
55+
import java.util.Set;
5556
import java.util.concurrent.TimeUnit;
5657

5758
import static java.util.Collections.emptyMap;
@@ -101,7 +102,7 @@ public void setup() {
101102
mapping.put("field" + i, new EsField("field-" + i, TEXT, emptyMap(), true, EsField.TimeSeriesFieldType.NONE));
102103
}
103104

104-
var esIndex = new EsIndex("test", mapping, Map.of("test", IndexMode.STANDARD));
105+
var esIndex = new EsIndex("test", mapping, Map.of("test", IndexMode.STANDARD), Set.of());
105106

106107
var functionRegistry = new EsqlFunctionRegistry();
107108

benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/EvalBenchmark.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,12 @@ private static EvalOperator.ExpressionEvaluator evaluator(String operation) {
217217
);
218218
yield EvalMapper.toEvaluator(
219219
FOLD_CONTEXT,
220-
new DateTrunc(Source.EMPTY, new Literal(Source.EMPTY, Duration.ofHours(24), DataType.TIME_DURATION), timestamp),
220+
new DateTrunc(
221+
Source.EMPTY,
222+
new Literal(Source.EMPTY, Duration.ofHours(24), DataType.TIME_DURATION),
223+
timestamp,
224+
configuration()
225+
),
221226
layout(timestamp)
222227
).get(driverContext);
223228
}

benchmarks/src/main/java/org/elasticsearch/benchmark/index/codec/tsdb/TSDBDocValuesMergeBenchmark.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.elasticsearch.cluster.metadata.DataStream;
2828
import org.elasticsearch.common.logging.LogConfigurator;
2929
import org.elasticsearch.index.codec.Elasticsearch92Lucene103Codec;
30+
import org.elasticsearch.index.codec.tsdb.BinaryDVCompressionMode;
3031
import org.elasticsearch.index.codec.tsdb.es819.ES819TSDBDocValuesFormat;
3132
import org.openjdk.jmh.annotations.Benchmark;
3233
import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -257,7 +258,13 @@ private static IndexWriterConfig createIndexWriterConfig(boolean optimizedMergeE
257258
);
258259
config.setLeafSorter(DataStream.TIMESERIES_LEAF_READERS_SORTER);
259260
config.setMergePolicy(new LogByteSizeMergePolicy());
260-
var docValuesFormat = new ES819TSDBDocValuesFormat(4096, 512, optimizedMergeEnabled);
261+
var docValuesFormat = new ES819TSDBDocValuesFormat(
262+
4096,
263+
512,
264+
optimizedMergeEnabled,
265+
BinaryDVCompressionMode.COMPRESSED_ZSTD_LEVEL_1,
266+
true
267+
);
261268
config.setCodec(new Elasticsearch92Lucene103Codec() {
262269
@Override
263270
public DocValuesFormat getDocValuesFormatForField(String field) {

benchmarks/src/main/java/org/elasticsearch/benchmark/vector/OSQScorerBenchmark.java

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import org.apache.lucene.util.quantization.OptimizedScalarQuantizer;
1919
import org.elasticsearch.common.logging.LogConfigurator;
2020
import org.elasticsearch.core.IOUtils;
21+
import org.elasticsearch.index.codec.vectors.diskbbq.next.ESNextDiskBBQVectorsFormat;
2122
import org.elasticsearch.simdvec.ES91OSQVectorsScorer;
23+
import org.elasticsearch.simdvec.ESNextOSQVectorsScorer;
2224
import org.elasticsearch.simdvec.internal.vectorization.ESVectorizationProvider;
2325
import org.openjdk.jmh.annotations.Benchmark;
2426
import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -57,6 +59,9 @@ public class OSQScorerBenchmark {
5759
@Param({ "384", "782", "1024" })
5860
int dims;
5961

62+
@Param({ "1", "2", "4" })
63+
int bits;
64+
6065
int length;
6166

6267
int numVectors = ES91OSQVectorsScorer.BULK_SIZE * 10;
@@ -68,8 +73,8 @@ public class OSQScorerBenchmark {
6873
float centroidDp;
6974

7075
byte[] scratch;
71-
ES91OSQVectorsScorer scorerMmap;
72-
ES91OSQVectorsScorer scorerNfios;
76+
ESNextOSQVectorsScorer scorerMmap;
77+
ESNextOSQVectorsScorer scorerNfios;
7378

7479
Directory dirMmap;
7580
IndexInput inMmap;
@@ -84,7 +89,12 @@ public class OSQScorerBenchmark {
8489
public void setup() throws IOException {
8590
Random random = new Random(123);
8691

87-
this.length = OptimizedScalarQuantizer.discretize(dims, 64) / 8;
92+
this.length = switch (bits) {
93+
case 1 -> ESNextDiskBBQVectorsFormat.QuantEncoding.ONE_BIT_4BIT_QUERY.getDocPackedLength(dims);
94+
case 2 -> ESNextDiskBBQVectorsFormat.QuantEncoding.TWO_BIT_4BIT_QUERY.getDocPackedLength(dims);
95+
case 4 -> ESNextDiskBBQVectorsFormat.QuantEncoding.FOUR_BIT_SYMMETRIC.getDocPackedLength(dims);
96+
default -> throw new IllegalArgumentException("Unsupported bits: " + bits);
97+
};
8898

8999
binaryVectors = new byte[numVectors][length];
90100
for (byte[] binaryVector : binaryVectors) {
@@ -109,8 +119,14 @@ public void setup() throws IOException {
109119
outNfios.close();
110120
inMmap = dirMmap.openInput("vectors", IOContext.DEFAULT);
111121
inNiofs = dirNiofs.openInput("vectors", IOContext.DEFAULT);
112-
113-
binaryQueries = new byte[numVectors][4 * length];
122+
int binaryQueryLength = switch (bits) {
123+
case 1 -> ESNextDiskBBQVectorsFormat.QuantEncoding.ONE_BIT_4BIT_QUERY.getQueryPackedLength(dims);
124+
case 2 -> ESNextDiskBBQVectorsFormat.QuantEncoding.TWO_BIT_4BIT_QUERY.getQueryPackedLength(dims);
125+
case 4 -> ESNextDiskBBQVectorsFormat.QuantEncoding.FOUR_BIT_SYMMETRIC.getQueryPackedLength(dims);
126+
default -> throw new IllegalArgumentException("Unsupported bits: " + bits);
127+
};
128+
129+
binaryQueries = new byte[numVectors][binaryQueryLength];
114130
for (byte[] binaryVector : binaryVectors) {
115131
random.nextBytes(binaryVector);
116132
}
@@ -123,8 +139,26 @@ public void setup() throws IOException {
123139
centroidDp = random.nextFloat();
124140

125141
scratch = new byte[length];
126-
scorerMmap = ESVectorizationProvider.getInstance().newES91OSQVectorsScorer(inMmap, dims);
127-
scorerNfios = ESVectorizationProvider.getInstance().newES91OSQVectorsScorer(inNiofs, dims);
142+
final int docBits;
143+
final int queryBits = switch (bits) {
144+
case 1 -> {
145+
docBits = 1;
146+
yield 4;
147+
}
148+
case 2 -> {
149+
docBits = 2;
150+
yield 4;
151+
}
152+
case 4 -> {
153+
docBits = 4;
154+
yield 4;
155+
}
156+
default -> throw new IllegalArgumentException("Unsupported bits: " + bits);
157+
};
158+
scorerMmap = ESVectorizationProvider.getInstance()
159+
.newESNextOSQVectorsScorer(inMmap, (byte) queryBits, (byte) docBits, dims, length);
160+
scorerNfios = ESVectorizationProvider.getInstance()
161+
.newESNextOSQVectorsScorer(inNiofs, (byte) queryBits, (byte) docBits, dims, length);
128162
scratchScores = new float[16];
129163
corrections = new float[3];
130164
}
@@ -156,7 +190,7 @@ public void scoreFromMemorySegmentOnlyVectorNiofsVect(Blackhole bh) throws IOExc
156190
scoreFromMemorySegmentOnlyVector(bh, inNiofs, scorerNfios);
157191
}
158192

159-
private void scoreFromMemorySegmentOnlyVector(Blackhole bh, IndexInput in, ES91OSQVectorsScorer scorer) throws IOException {
193+
private void scoreFromMemorySegmentOnlyVector(Blackhole bh, IndexInput in, ESNextOSQVectorsScorer scorer) throws IOException {
160194
for (int j = 0; j < numQueries; j++) {
161195
in.seek(0);
162196
for (int i = 0; i < numVectors; i++) {
@@ -203,7 +237,7 @@ public void scoreFromMemorySegmentOnlyVectorBulkNiofsVect(Blackhole bh) throws I
203237
scoreFromMemorySegmentOnlyVectorBulk(bh, inNiofs, scorerNfios);
204238
}
205239

206-
private void scoreFromMemorySegmentOnlyVectorBulk(Blackhole bh, IndexInput in, ES91OSQVectorsScorer scorer) throws IOException {
240+
private void scoreFromMemorySegmentOnlyVectorBulk(Blackhole bh, IndexInput in, ESNextOSQVectorsScorer scorer) throws IOException {
207241
for (int j = 0; j < numQueries; j++) {
208242
in.seek(0);
209243
for (int i = 0; i < numVectors; i += 16) {
@@ -252,7 +286,7 @@ public void scoreFromMemorySegmentAllBulkNiofsVect(Blackhole bh) throws IOExcept
252286
scoreFromMemorySegmentAllBulk(bh, inNiofs, scorerNfios);
253287
}
254288

255-
private void scoreFromMemorySegmentAllBulk(Blackhole bh, IndexInput in, ES91OSQVectorsScorer scorer) throws IOException {
289+
private void scoreFromMemorySegmentAllBulk(Blackhole bh, IndexInput in, ESNextOSQVectorsScorer scorer) throws IOException {
256290
for (int j = 0; j < numQueries; j++) {
257291
in.seek(0);
258292
for (int i = 0; i < numVectors; i += 16) {

build-tools-internal/version.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
elasticsearch = 9.3.0
2-
lucene = 10.3.1
2+
lucene = 10.3.2
33

44
bundled_jdk_vendor = openjdk
55
bundled_jdk = 25.0.1+8@2fbf10d8c78e40bd87641c434705079d
@@ -19,6 +19,7 @@ commons_lang3 = 3.9
1919
google_oauth_client = 1.34.1
2020
awsv2sdk = 2.31.78
2121
reactive_streams = 1.0.4
22+
ldapsdk = 7.0.3
2223

2324
antlr4 = 4.13.1
2425
# bouncy castle version for non-fips. fips jars use a different version

distribution/docker/src/docker/dockerfiles/cloud_ess_fips/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# Extract Elasticsearch artifact
2626
################################################################################
2727
28-
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:dea9b73186c5565a5bfa820a68f63ff497fdc9f06a0afc777159d819c5f01dc4 AS builder
28+
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:a02c67d96cd6ec1b50a055f1f5515e0987b643d001d436088cefc02e5b786bf9 AS builder
2929
3030
# Install required packages to extract the Elasticsearch distribution
3131
RUN <%= retry.loop(package_manager, "export DEBIAN_FRONTEND=noninteractive && ${package_manager} update && ${package_manager} update && ${package_manager} add --no-cache curl") %>
@@ -104,7 +104,7 @@ WORKDIR /usr/share/elasticsearch/config
104104
# Add entrypoint
105105
################################################################################
106106

107-
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:dea9b73186c5565a5bfa820a68f63ff497fdc9f06a0afc777159d819c5f01dc4
107+
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:a02c67d96cd6ec1b50a055f1f5515e0987b643d001d436088cefc02e5b786bf9
108108

109109
RUN <%= retry.loop(package_manager,
110110
"export DEBIAN_FRONTEND=noninteractive && \n" +

distribution/docker/src/docker/dockerfiles/wolfi/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# Extract Elasticsearch artifact
2626
################################################################################
2727
28-
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:401d8684fd5932c178d7cf524cb05a5088d0e4f74e886e2d0a3b4b5127349a49 AS builder
28+
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:25397820ef168d951339e69cedb5460f354cea842e2af367e33b89e988c51615 AS builder
2929
3030
# Install required packages to extract the Elasticsearch distribution
3131
RUN <%= retry.loop(package_manager, "export DEBIAN_FRONTEND=noninteractive && ${package_manager} update && ${package_manager} update && ${package_manager} add --no-cache curl") %>
@@ -80,7 +80,7 @@ RUN sed -i -e 's/ES_DISTRIBUTION_TYPE=tar/ES_DISTRIBUTION_TYPE=docker/' bin/elas
8080
# Add entrypoint
8181
################################################################################
8282

83-
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:401d8684fd5932c178d7cf524cb05a5088d0e4f74e886e2d0a3b4b5127349a49
83+
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:25397820ef168d951339e69cedb5460f354cea842e2af367e33b89e988c51615
8484

8585
RUN <%= retry.loop(package_manager,
8686
"export DEBIAN_FRONTEND=noninteractive && \n" +

docs/Versions.asciidoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[]
33

4-
:lucene_version: 10.3.1
5-
:lucene_version_path: 10_3_1
4+
:lucene_version: 10.3.2
5+
:lucene_version_path: 10_3_2
66
:jdk: 11.0.2
77
:jdk_major: 11
88
:build_type: tar

docs/changelog/128602.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 128602
2+
summary: ChangePointDetector now correctly detects when a constant function returns a different value
3+
area: Machine Learning
4+
type: bug
5+
issues:
6+
- 127517

0 commit comments

Comments
 (0)