Skip to content

Commit 485d7cc

Browse files
committed
Merge remote-tracking branch 'origin/main' into esql-minute-m
2 parents c4e3d19 + e8c7e42 commit 485d7cc

File tree

122 files changed

+1140
-849
lines changed

Some content is hidden

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

122 files changed

+1140
-849
lines changed

benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.apache.lucene.index.IndexWriter;
1616
import org.apache.lucene.index.IndexWriterConfig;
1717
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
18-
import org.apache.lucene.index.SortedNumericDocValues;
1918
import org.apache.lucene.search.IndexSearcher;
2019
import org.apache.lucene.search.MatchAllDocsQuery;
2120
import org.apache.lucene.search.Query;
@@ -29,6 +28,7 @@
2928
import org.elasticsearch.index.fielddata.FieldDataContext;
3029
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
3130
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
31+
import org.elasticsearch.index.fielddata.SortedNumericLongValues;
3232
import org.elasticsearch.index.mapper.IndexType;
3333
import org.elasticsearch.index.mapper.MappedFieldType;
3434
import org.elasticsearch.index.mapper.MappingLookup;
@@ -179,14 +179,14 @@ private ScoreScript.Factory bareMetalScript() {
179179
return new ScoreScript.LeafFactory() {
180180
@Override
181181
public ScoreScript newInstance(DocReader docReader) throws IOException {
182-
SortedNumericDocValues values = ifd.load(((DocValuesDocReader) docReader).getLeafReaderContext()).getLongValues();
182+
SortedNumericLongValues values = ifd.load(((DocValuesDocReader) docReader).getLeafReaderContext()).getLongValues();
183183
return new ScoreScript(params, null, docReader) {
184184
private int docId;
185185

186186
@Override
187187
public double execute(ExplanationHolder explanation) {
188188
try {
189-
values.advance(docId);
189+
values.advanceExact(docId);
190190
if (values.docValueCount() != 1) {
191191
throw new IllegalArgumentException("script only works when there is exactly one value");
192192
}

docs/changelog/136265.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 136265
2+
summary: Adding `match_only_text` subfield to `*.display_name` fields in `ecs@mappings` to be compliant with the latest additions in ECS
3+
area: Data streams
4+
type: feature
5+
issues: []

modules/aggregations/src/main/java/org/elasticsearch/aggregations/bucket/histogram/AutoDateHistogramAggregator.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
*/
99
package org.elasticsearch.aggregations.bucket.histogram;
1010

11-
import org.apache.lucene.index.DocValues;
12-
import org.apache.lucene.index.NumericDocValues;
13-
import org.apache.lucene.index.SortedNumericDocValues;
11+
import org.apache.lucene.search.LongValues;
1412
import org.apache.lucene.search.ScoreMode;
1513
import org.apache.lucene.util.CollectionUtil;
1614
import org.elasticsearch.aggregations.bucket.histogram.AutoDateHistogramAggregationBuilder.RoundingInfo;
@@ -19,6 +17,7 @@
1917
import org.elasticsearch.common.util.IntArray;
2018
import org.elasticsearch.common.util.LongArray;
2119
import org.elasticsearch.core.Releasables;
20+
import org.elasticsearch.index.fielddata.SortedNumericLongValues;
2221
import org.elasticsearch.search.DocValueFormat;
2322
import org.elasticsearch.search.aggregations.AggregationExecutionContext;
2423
import org.elasticsearch.search.aggregations.Aggregator;
@@ -125,17 +124,17 @@ public final DeferringBucketCollector buildDeferringCollector() {
125124
return deferringCollector;
126125
}
127126

128-
protected abstract LeafBucketCollector getLeafCollector(SortedNumericDocValues values, LeafBucketCollector sub) throws IOException;
127+
protected abstract LeafBucketCollector getLeafCollector(SortedNumericLongValues values, LeafBucketCollector sub) throws IOException;
129128

130-
protected abstract LeafBucketCollector getLeafCollector(NumericDocValues values, LeafBucketCollector sub) throws IOException;
129+
protected abstract LeafBucketCollector getLeafCollector(LongValues values, LeafBucketCollector sub) throws IOException;
131130

132131
@Override
133132
public final LeafBucketCollector getLeafCollector(AggregationExecutionContext aggCtx, LeafBucketCollector sub) throws IOException {
134133
if (valuesSource == null) {
135134
return LeafBucketCollector.NO_OP_COLLECTOR;
136135
}
137-
final SortedNumericDocValues values = valuesSource.longValues(aggCtx.getLeafReaderContext());
138-
final NumericDocValues singleton = DocValues.unwrapSingleton(values);
136+
final SortedNumericLongValues values = valuesSource.longValues(aggCtx.getLeafReaderContext());
137+
final LongValues singleton = SortedNumericLongValues.unwrapSingleton(values);
139138
return singleton != null ? getLeafCollector(singleton, sub) : getLeafCollector(values, sub);
140139
}
141140

@@ -239,7 +238,7 @@ private static class FromSingle extends AutoDateHistogramAggregator {
239238
}
240239

241240
@Override
242-
protected LeafBucketCollector getLeafCollector(SortedNumericDocValues values, LeafBucketCollector sub) {
241+
protected LeafBucketCollector getLeafCollector(SortedNumericLongValues values, LeafBucketCollector sub) {
243242
return new LeafBucketCollectorBase(sub, values) {
244243
@Override
245244
public void collect(int doc, long owningBucketOrd) throws IOException {
@@ -265,7 +264,7 @@ public void collect(int doc, long owningBucketOrd) throws IOException {
265264
}
266265

267266
@Override
268-
protected LeafBucketCollector getLeafCollector(NumericDocValues values, LeafBucketCollector sub) {
267+
protected LeafBucketCollector getLeafCollector(LongValues values, LeafBucketCollector sub) {
269268
return new LeafBucketCollectorBase(sub, values) {
270269
@Override
271270
public void collect(int doc, long owningBucketOrd) throws IOException {
@@ -461,7 +460,7 @@ private static class FromMany extends AutoDateHistogramAggregator {
461460
}
462461

463462
@Override
464-
protected LeafBucketCollector getLeafCollector(SortedNumericDocValues values, LeafBucketCollector sub) {
463+
protected LeafBucketCollector getLeafCollector(SortedNumericLongValues values, LeafBucketCollector sub) {
465464
return new LeafBucketCollectorBase(sub, values) {
466465
@Override
467466
public void collect(int doc, long owningBucketOrd) throws IOException {
@@ -487,7 +486,7 @@ public void collect(int doc, long owningBucketOrd) throws IOException {
487486
}
488487

489488
@Override
490-
protected LeafBucketCollector getLeafCollector(NumericDocValues values, LeafBucketCollector sub) {
489+
protected LeafBucketCollector getLeafCollector(LongValues values, LeafBucketCollector sub) {
491490
return new LeafBucketCollectorBase(sub, values) {
492491
@Override
493492
public void collect(int doc, long owningBucketOrd) throws IOException {

modules/aggregations/src/main/java/org/elasticsearch/aggregations/bucket/timeseries/TimeSeriesAggregator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
package org.elasticsearch.aggregations.bucket.timeseries;
1111

12-
import org.apache.lucene.index.SortedNumericDocValues;
1312
import org.apache.lucene.util.BytesRef;
1413
import org.elasticsearch.common.util.LongArray;
1514
import org.elasticsearch.common.util.ObjectArray;
1615
import org.elasticsearch.core.Releasables;
1716
import org.elasticsearch.index.fielddata.SortedBinaryDocValues;
17+
import org.elasticsearch.index.fielddata.SortedNumericLongValues;
1818
import org.elasticsearch.index.mapper.RoutingPathFields;
1919
import org.elasticsearch.index.mapper.TimeSeriesIdFieldMapper;
2020
import org.elasticsearch.search.aggregations.AggregationExecutionContext;
@@ -121,7 +121,7 @@ protected LeafBucketCollector getLeafCollector(AggregationExecutionContext aggCt
121121
for (var entry : dimensionValueSources.entrySet()) {
122122
String fieldName = entry.getKey();
123123
if (entry.getValue() instanceof ValuesSource.Numeric numericVS) {
124-
SortedNumericDocValues docValues = numericVS.longValues(aggCtx.getLeafReaderContext());
124+
SortedNumericLongValues docValues = numericVS.longValues(aggCtx.getLeafReaderContext());
125125
dimensionConsumers.put(entry.getKey(), (docId, tsidBuilder) -> {
126126
if (docValues.advanceExact(docId)) {
127127
assert docValues.docValueCount() == 1 : "Dimension field cannot be a multi-valued field";

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99

1010
package org.elasticsearch.index.mapper.extras;
1111

12-
import org.apache.lucene.index.DocValues;
1312
import org.apache.lucene.index.LeafReaderContext;
14-
import org.apache.lucene.index.NumericDocValues;
15-
import org.apache.lucene.index.SortedNumericDocValues;
13+
import org.apache.lucene.search.LongValues;
1614
import org.apache.lucene.search.Query;
1715
import org.elasticsearch.common.Explicit;
1816
import org.elasticsearch.common.settings.Setting;
@@ -28,6 +26,7 @@
2826
import org.elasticsearch.index.fielddata.LeafNumericFieldData;
2927
import org.elasticsearch.index.fielddata.NumericDoubleValues;
3028
import org.elasticsearch.index.fielddata.SortedNumericDoubleValues;
29+
import org.elasticsearch.index.fielddata.SortedNumericLongValues;
3130
import org.elasticsearch.index.fielddata.SourceValueFetcherSortedDoubleIndexFieldData;
3231
import org.elasticsearch.index.fielddata.plain.LeafDoubleFieldData;
3332
import org.elasticsearch.index.fielddata.plain.SortedNumericIndexFieldData;
@@ -831,8 +830,8 @@ public void close() {
831830

832831
@Override
833832
public SortedNumericDoubleValues getDoubleValues() {
834-
final SortedNumericDocValues values = scaledFieldData.getLongValues();
835-
final NumericDocValues singleValues = DocValues.unwrapSingleton(values);
833+
final SortedNumericLongValues values = scaledFieldData.getLongValues();
834+
final LongValues singleValues = SortedNumericLongValues.unwrapSingleton(values);
836835
if (singleValues != null) {
837836
return FieldData.singleton(new NumericDoubleValues() {
838837
@Override

plugins/mapper-murmur3/src/main/java/org/elasticsearch/script/field/murmur3/Murmur3DocValueField.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
package org.elasticsearch.script.field.murmur3;
1111

12-
import org.apache.lucene.index.SortedNumericDocValues;
12+
import org.elasticsearch.index.fielddata.SortedNumericLongValues;
1313
import org.elasticsearch.script.field.AbstractLongDocValuesField;
1414

1515
public class Murmur3DocValueField extends AbstractLongDocValuesField {
1616

17-
public Murmur3DocValueField(SortedNumericDocValues input, String name) {
17+
public Murmur3DocValueField(SortedNumericLongValues input, String name) {
1818
super(input, name);
1919
}
2020
}

server/src/main/java/org/elasticsearch/action/search/AbstractSearchAsyncAction.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.elasticsearch.common.util.concurrent.AtomicArray;
2828
import org.elasticsearch.core.Releasable;
2929
import org.elasticsearch.index.shard.ShardId;
30+
import org.elasticsearch.rest.action.search.SearchResponseMetrics;
3031
import org.elasticsearch.search.SearchContextMissingException;
3132
import org.elasticsearch.search.SearchPhaseResult;
3233
import org.elasticsearch.search.SearchShardTarget;
@@ -93,6 +94,8 @@ abstract class AbstractSearchAsyncAction<Result extends SearchPhaseResult> exten
9394
private final Map<String, PendingExecutions> pendingExecutionsPerNode;
9495
private final AtomicBoolean requestCancelled = new AtomicBoolean();
9596
private final int skippedCount;
97+
protected final SearchResponseMetrics searchResponseMetrics;
98+
protected long phaseStartTimeInNanos;
9699

97100
// protected for tests
98101
protected final SubscribableListener<Void> doneFuture = new SubscribableListener<>();
@@ -114,7 +117,8 @@ abstract class AbstractSearchAsyncAction<Result extends SearchPhaseResult> exten
114117
SearchTask task,
115118
SearchPhaseResults<Result> resultConsumer,
116119
int maxConcurrentRequestsPerNode,
117-
SearchResponse.Clusters clusters
120+
SearchResponse.Clusters clusters,
121+
SearchResponseMetrics searchResponseMetrics
118122
) {
119123
super(name);
120124
this.namedWriteableRegistry = namedWriteableRegistry;
@@ -155,6 +159,7 @@ abstract class AbstractSearchAsyncAction<Result extends SearchPhaseResult> exten
155159
// at the end of the search
156160
addReleasable(resultConsumer);
157161
this.clusters = clusters;
162+
this.searchResponseMetrics = searchResponseMetrics;
158163
}
159164

160165
protected void notifyListShards(
@@ -221,6 +226,7 @@ public final void start() {
221226

222227
@Override
223228
protected final void run() {
229+
phaseStartTimeInNanos = System.nanoTime();
224230
if (outstandingShards.get() == 0) {
225231
onPhaseDone();
226232
return;
@@ -666,6 +672,7 @@ void sendReleaseSearchContext(ShardSearchContextId contextId, Transport.Connecti
666672
* @see #onShardResult(SearchPhaseResult)
667673
*/
668674
private void onPhaseDone() { // as a tribute to @kimchy aka. finishHim()
675+
searchResponseMetrics.recordSearchPhaseDuration(getName(), System.nanoTime() - phaseStartTimeInNanos);
669676
executeNextPhase(getName(), this::getNextPhase);
670677
}
671678

server/src/main/java/org/elasticsearch/action/search/SearchDfsQueryThenFetchAsyncAction.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.elasticsearch.client.internal.Client;
1515
import org.elasticsearch.cluster.ClusterState;
1616
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
17+
import org.elasticsearch.rest.action.search.SearchResponseMetrics;
1718
import org.elasticsearch.search.SearchPhaseResult;
1819
import org.elasticsearch.search.SearchShardTarget;
1920
import org.elasticsearch.search.dfs.DfsSearchResult;
@@ -47,7 +48,8 @@ final class SearchDfsQueryThenFetchAsyncAction extends AbstractSearchAsyncAction
4748
ClusterState clusterState,
4849
SearchTask task,
4950
SearchResponse.Clusters clusters,
50-
Client client
51+
Client client,
52+
SearchResponseMetrics searchResponseMetrics
5153
) {
5254
super(
5355
"dfs",
@@ -66,7 +68,8 @@ final class SearchDfsQueryThenFetchAsyncAction extends AbstractSearchAsyncAction
6668
task,
6769
new ArraySearchPhaseResults<>(shardsIts.size()),
6870
request.getMaxConcurrentShardRequests(),
69-
clusters
71+
clusters,
72+
searchResponseMetrics
7073
);
7174
this.queryPhaseResultConsumer = queryPhaseResultConsumer;
7275
addReleasable(queryPhaseResultConsumer);

server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.elasticsearch.core.SimpleRefCounted;
3636
import org.elasticsearch.core.TimeValue;
3737
import org.elasticsearch.index.shard.ShardId;
38+
import org.elasticsearch.rest.action.search.SearchResponseMetrics;
3839
import org.elasticsearch.search.SearchPhaseResult;
3940
import org.elasticsearch.search.SearchService;
4041
import org.elasticsearch.search.SearchShardTarget;
@@ -92,6 +93,7 @@ public class SearchQueryThenFetchAsyncAction extends AbstractSearchAsyncAction<S
9293
private volatile BottomSortValuesCollector bottomSortCollector;
9394
private final Client client;
9495
private final boolean batchQueryPhase;
96+
private long phaseStartTimeNanos;
9597

9698
SearchQueryThenFetchAsyncAction(
9799
Logger logger,
@@ -110,7 +112,8 @@ public class SearchQueryThenFetchAsyncAction extends AbstractSearchAsyncAction<S
110112
SearchTask task,
111113
SearchResponse.Clusters clusters,
112114
Client client,
113-
boolean batchQueryPhase
115+
boolean batchQueryPhase,
116+
SearchResponseMetrics searchResponseMetrics
114117
) {
115118
super(
116119
"query",
@@ -129,7 +132,8 @@ public class SearchQueryThenFetchAsyncAction extends AbstractSearchAsyncAction<S
129132
task,
130133
resultConsumer,
131134
request.getMaxConcurrentShardRequests(),
132-
clusters
135+
clusters,
136+
searchResponseMetrics
133137
);
134138
this.topDocsSize = getTopDocsSize(request);
135139
this.trackTotalHitsUpTo = request.resolveTrackTotalHitsUpTo();

server/src/main/java/org/elasticsearch/action/search/TransportOpenPointInTimeAction.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.elasticsearch.index.shard.ShardId;
3535
import org.elasticsearch.injection.guice.Inject;
3636
import org.elasticsearch.rest.RestStatus;
37+
import org.elasticsearch.rest.action.search.SearchResponseMetrics;
3738
import org.elasticsearch.search.SearchPhaseResult;
3839
import org.elasticsearch.search.SearchService;
3940
import org.elasticsearch.search.builder.SearchSourceBuilder;
@@ -70,6 +71,7 @@ public class TransportOpenPointInTimeAction extends HandledTransportAction<OpenP
7071
private final TransportService transportService;
7172
private final SearchService searchService;
7273
private final ClusterService clusterService;
74+
private final SearchResponseMetrics searchResponseMetrics;
7375

7476
@Inject
7577
public TransportOpenPointInTimeAction(
@@ -79,7 +81,8 @@ public TransportOpenPointInTimeAction(
7981
TransportSearchAction transportSearchAction,
8082
SearchTransportService searchTransportService,
8183
NamedWriteableRegistry namedWriteableRegistry,
82-
ClusterService clusterService
84+
ClusterService clusterService,
85+
SearchResponseMetrics searchResponseMetrics
8386
) {
8487
super(TYPE.name(), transportService, actionFilters, OpenPointInTimeRequest::new, EsExecutors.DIRECT_EXECUTOR_SERVICE);
8588
this.transportService = transportService;
@@ -88,6 +91,7 @@ public TransportOpenPointInTimeAction(
8891
this.searchTransportService = searchTransportService;
8992
this.namedWriteableRegistry = namedWriteableRegistry;
9093
this.clusterService = clusterService;
94+
this.searchResponseMetrics = searchResponseMetrics;
9195
transportService.registerRequestHandler(
9296
OPEN_SHARD_READER_CONTEXT_NAME,
9397
EsExecutors.DIRECT_EXECUTOR_SERVICE,
@@ -230,7 +234,7 @@ void runOpenPointInTimePhase(
230234
: searchRequest.getMaxConcurrentShardRequests() + " != " + pitRequest.maxConcurrentShardRequests();
231235
TransportVersion minTransportVersion = clusterState.getMinTransportVersion();
232236
new AbstractSearchAsyncAction<>(
233-
actionName,
237+
"open_pit",
234238
logger,
235239
namedWriteableRegistry,
236240
searchTransportService,
@@ -246,7 +250,8 @@ void runOpenPointInTimePhase(
246250
task,
247251
new ArraySearchPhaseResults<>(shardIterators.size()),
248252
searchRequest.getMaxConcurrentShardRequests(),
249-
clusters
253+
clusters,
254+
searchResponseMetrics
250255
) {
251256
@Override
252257
protected void executePhaseOnShard(

0 commit comments

Comments
 (0)