Skip to content

Commit c7d4151

Browse files
committed
Fixed naming inconsistency for fields/stored_fields in the APIs (#20166)
This change replaces the fields parameter with stored_fields when it makes sense. This is dictated by the renaming we made in #18943 for the search API. The following list of endpoint has been changed to use `stored_fields` instead of `fields`: * get * mget * explain The documentation and the rest API spec has been updated to cope with the changes for the following APIs: * delete_by_query * get * mget * explain The `fields` parameter has been deprecated for the following APIs (it is replaced by _source filtering): * update: the fields are extracted from the _source directly. * bulk: the fields parameter is used but fields are extracted from the source directly so it is allowed to have non-stored fields. Some APIs still have the `fields` parameter for various reasons: * cat.fielddata: the fields paramaters relates to the fielddata fields that should be printed. * indices.clear_cache: used to indicate which fielddata fields should be cleared. * indices.get_field_mapping: used to filter fields in the mapping. * indices.stats: get stats on fields (stored or not stored). * termvectors: fields are retrieved from the stored fields if possible and extracted from the _source otherwise. * mtermvectors: * nodes.stats: the fields parameter is used to concatenate completion_fields and fielddata_fields so it's not related to stored_fields at all. Fixes #20155
1 parent 91f54f0 commit c7d4151

File tree

80 files changed

+918
-496
lines changed

Some content is hidden

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

80 files changed

+918
-496
lines changed

client/client-benchmark-noop-api-plugin/src/main/java/org/elasticsearch/plugin/noop/action/bulk/RestNoopBulkAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void handleRequest(final RestRequest request, final RestChannel channel,
7272
}
7373
bulkRequest.timeout(request.paramAsTime("timeout", BulkShardRequest.DEFAULT_TIMEOUT));
7474
bulkRequest.setRefreshPolicy(request.param("refresh"));
75-
bulkRequest.add(request.content(), defaultIndex, defaultType, defaultRouting, defaultFields, defaultPipeline, null, true);
75+
bulkRequest.add(request.content(), defaultIndex, defaultType, defaultRouting, defaultFields, null, defaultPipeline, null, true);
7676

7777
// short circuit the call to the transport layer
7878
BulkRestBuilderListener listener = new BulkRestBuilderListener(channel, request);

core/src/main/java/org/elasticsearch/action/bulk/BulkProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ public BulkProcessor add(BytesReference data, @Nullable String defaultIndex, @Nu
293293
}
294294

295295
public synchronized BulkProcessor add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, @Nullable String defaultPipeline, @Nullable Object payload) throws Exception {
296-
bulkRequest.add(data, defaultIndex, defaultType, null, null, defaultPipeline, payload, true);
296+
bulkRequest.add(data, defaultIndex, defaultType, null, null, null, defaultPipeline, payload, true);
297297
executeIfNeeded();
298298
return this;
299299
}

core/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,15 @@
3535
import org.elasticsearch.common.bytes.BytesReference;
3636
import org.elasticsearch.common.io.stream.StreamInput;
3737
import org.elasticsearch.common.io.stream.StreamOutput;
38+
import org.elasticsearch.common.logging.DeprecationLogger;
39+
import org.elasticsearch.common.logging.Loggers;
3840
import org.elasticsearch.common.lucene.uid.Versions;
3941
import org.elasticsearch.common.unit.TimeValue;
4042
import org.elasticsearch.common.xcontent.XContent;
4143
import org.elasticsearch.common.xcontent.XContentFactory;
4244
import org.elasticsearch.common.xcontent.XContentParser;
4345
import org.elasticsearch.index.VersionType;
46+
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
4447

4548
import java.io.IOException;
4649
import java.util.ArrayList;
@@ -57,6 +60,8 @@
5760
* @see org.elasticsearch.client.Client#bulk(BulkRequest)
5861
*/
5962
public class BulkRequest extends ActionRequest<BulkRequest> implements CompositeIndicesRequest, WriteRequest<BulkRequest> {
63+
private static final DeprecationLogger DEPRECATION_LOGGER =
64+
new DeprecationLogger(Loggers.getLogger(BulkRequest.class));
6065

6166
private static final int REQUEST_OVERHEAD = 50;
6267

@@ -257,17 +262,17 @@ public BulkRequest add(byte[] data, int from, int length, @Nullable String defau
257262
* Adds a framed data in binary format
258263
*/
259264
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType) throws Exception {
260-
return add(data, defaultIndex, defaultType, null, null, null, null, true);
265+
return add(data, defaultIndex, defaultType, null, null, null, null, null, true);
261266
}
262267

263268
/**
264269
* Adds a framed data in binary format
265270
*/
266271
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, boolean allowExplicitIndex) throws Exception {
267-
return add(data, defaultIndex, defaultType, null, null, null, null, allowExplicitIndex);
272+
return add(data, defaultIndex, defaultType, null, null, null, null, null, allowExplicitIndex);
268273
}
269274

270-
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, @Nullable String defaultRouting, @Nullable String[] defaultFields, @Nullable String defaultPipeline, @Nullable Object payload, boolean allowExplicitIndex) throws Exception {
275+
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, @Nullable String defaultRouting, @Nullable String[] defaultFields, @Nullable FetchSourceContext defaultFetchSourceContext, @Nullable String defaultPipeline, @Nullable Object payload, boolean allowExplicitIndex) throws Exception {
271276
XContent xContent = XContentFactory.xContent(data);
272277
int line = 0;
273278
int from = 0;
@@ -301,6 +306,7 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null
301306
String id = null;
302307
String routing = defaultRouting;
303308
String parent = null;
309+
FetchSourceContext fetchSourceContext = defaultFetchSourceContext;
304310
String[] fields = defaultFields;
305311
String timestamp = null;
306312
TimeValue ttl = null;
@@ -353,16 +359,21 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null
353359
pipeline = parser.text();
354360
} else if ("fields".equals(currentFieldName)) {
355361
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains a simple value for parameter [fields] while a list is expected");
362+
} else if ("_source".equals(currentFieldName)) {
363+
fetchSourceContext = FetchSourceContext.parse(parser);
356364
} else {
357365
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]");
358366
}
359367
} else if (token == XContentParser.Token.START_ARRAY) {
360368
if ("fields".equals(currentFieldName)) {
369+
DEPRECATION_LOGGER.deprecated("Deprecated field [fields] used, expected [_source] instead");
361370
List<Object> values = parser.list();
362371
fields = values.toArray(new String[values.size()]);
363372
} else {
364373
throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]");
365374
}
375+
} else if (token == XContentParser.Token.START_OBJECT && "_source".equals(currentFieldName)) {
376+
fetchSourceContext = FetchSourceContext.parse(parser);
366377
} else if (token != XContentParser.Token.VALUE_NULL) {
367378
throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]");
368379
}
@@ -402,7 +413,10 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null
402413
.version(version).versionType(versionType)
403414
.routing(routing)
404415
.parent(parent)
405-
.source(data.slice(from, nextMarker - from));
416+
.fromXContent(data.slice(from, nextMarker - from));
417+
if (fetchSourceContext != null) {
418+
updateRequest.fetchSource(fetchSourceContext);
419+
}
406420
if (fields != null) {
407421
updateRequest.fields(fields);
408422
}

core/src/main/java/org/elasticsearch/action/bulk/TransportShardBulkAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,8 @@ private Tuple<Translog.Location, BulkItemRequest> update(IndexMetaData metaData,
251251
// add the response
252252
IndexResponse indexResponse = result.getResponse();
253253
UpdateResponse updateResponse = new UpdateResponse(indexResponse.getShardInfo(), indexResponse.getShardId(), indexResponse.getType(), indexResponse.getId(), indexResponse.getVersion(), indexResponse.getResult());
254-
if (updateRequest.fields() != null && updateRequest.fields().length > 0) {
254+
if ((updateRequest.fetchSource() != null && updateRequest.fetchSource().fetchSource()) ||
255+
(updateRequest.fields() != null && updateRequest.fields().length > 0)) {
255256
Tuple<XContentType, Map<String, Object>> sourceAndContent = XContentHelper.convertToMap(indexSourceAsBytes, true);
256257
updateResponse.setGetResult(updateHelper.extractGetResult(updateRequest, request.index(), indexResponse.getVersion(), sourceAndContent.v2(), sourceAndContent.v1(), indexSourceAsBytes));
257258
}

core/src/main/java/org/elasticsearch/action/explain/ExplainRequest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class ExplainRequest extends SingleShardRequest<ExplainRequest> {
4040
private String routing;
4141
private String preference;
4242
private QueryBuilder query;
43-
private String[] fields;
43+
private String[] storedFields;
4444
private FetchSourceContext fetchSourceContext;
4545

4646
private String[] filteringAlias = Strings.EMPTY_ARRAY;
@@ -122,12 +122,12 @@ public FetchSourceContext fetchSourceContext() {
122122
}
123123

124124

125-
public String[] fields() {
126-
return fields;
125+
public String[] storedFields() {
126+
return storedFields;
127127
}
128128

129-
public ExplainRequest fields(String[] fields) {
130-
this.fields = fields;
129+
public ExplainRequest storedFields(String[] fields) {
130+
this.storedFields = fields;
131131
return this;
132132
}
133133

@@ -167,8 +167,8 @@ public void readFrom(StreamInput in) throws IOException {
167167
preference = in.readOptionalString();
168168
query = in.readNamedWriteable(QueryBuilder.class);
169169
filteringAlias = in.readStringArray();
170-
fields = in.readOptionalStringArray();
171-
fetchSourceContext = in.readOptionalStreamable(FetchSourceContext::new);
170+
storedFields = in.readOptionalStringArray();
171+
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
172172
nowInMillis = in.readVLong();
173173
}
174174

@@ -181,8 +181,8 @@ public void writeTo(StreamOutput out) throws IOException {
181181
out.writeOptionalString(preference);
182182
out.writeNamedWriteable(query);
183183
out.writeStringArray(filteringAlias);
184-
out.writeOptionalStringArray(fields);
185-
out.writeOptionalStreamable(fetchSourceContext);
184+
out.writeOptionalStringArray(storedFields);
185+
out.writeOptionalWriteable(fetchSourceContext);
186186
out.writeVLong(nowInMillis);
187187
}
188188
}

core/src/main/java/org/elasticsearch/action/explain/ExplainRequestBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ public ExplainRequestBuilder setQuery(QueryBuilder query) {
8888
}
8989

9090
/**
91-
* Explicitly specify the fields that will be returned for the explained document. By default, nothing is returned.
91+
* Explicitly specify the stored fields that will be returned for the explained document. By default, nothing is returned.
9292
*/
93-
public ExplainRequestBuilder setFields(String... fields) {
94-
request.fields(fields);
93+
public ExplainRequestBuilder setStoredFields(String... fields) {
94+
request.storedFields(fields);
9595
return this;
9696
}
9797

core/src/main/java/org/elasticsearch/action/explain/TransportExplainAction.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,11 @@ protected ExplainResponse shardOperation(ExplainRequest request, ShardId shardId
106106
Rescorer rescorer = ctx.rescorer();
107107
explanation = rescorer.explain(topLevelDocId, context, ctx, explanation);
108108
}
109-
if (request.fields() != null || (request.fetchSourceContext() != null && request.fetchSourceContext().fetchSource())) {
109+
if (request.storedFields() != null || (request.fetchSourceContext() != null && request.fetchSourceContext().fetchSource())) {
110110
// Advantage is that we're not opening a second searcher to retrieve the _source. Also
111111
// because we are working in the same searcher in engineGetResult we can be sure that a
112112
// doc isn't deleted between the initial get and this call.
113-
GetResult getResult = context.indexShard().getService().get(result, request.id(), request.type(), request.fields(),
114-
request.fetchSourceContext());
113+
GetResult getResult = context.indexShard().getService().get(result, request.id(), request.type(), request.storedFields(), request.fetchSourceContext());
115114
return new ExplainResponse(shardId.getIndexName(), request.type(), request.id(), true, explanation, getResult);
116115
} else {
117116
return new ExplainResponse(shardId.getIndexName(), request.type(), request.id(), true, explanation);

core/src/main/java/org/elasticsearch/action/get/GetRequest.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class GetRequest extends SingleShardRequest<GetRequest> implements Realti
5151
private String parent;
5252
private String preference;
5353

54-
private String[] fields;
54+
private String[] storedFields;
5555

5656
private FetchSourceContext fetchSourceContext;
5757

@@ -186,20 +186,20 @@ public FetchSourceContext fetchSourceContext() {
186186
}
187187

188188
/**
189-
* Explicitly specify the fields that will be returned. By default, the <tt>_source</tt>
189+
* Explicitly specify the stored fields that will be returned. By default, the <tt>_source</tt>
190190
* field will be returned.
191191
*/
192-
public GetRequest fields(String... fields) {
193-
this.fields = fields;
192+
public GetRequest storedFields(String... fields) {
193+
this.storedFields = fields;
194194
return this;
195195
}
196196

197197
/**
198-
* Explicitly specify the fields that will be returned. By default, the <tt>_source</tt>
198+
* Explicitly specify the stored fields that will be returned. By default, the <tt>_source</tt>
199199
* field will be returned.
200200
*/
201-
public String[] fields() {
202-
return this.fields;
201+
public String[] storedFields() {
202+
return this.storedFields;
203203
}
204204

205205
/**
@@ -260,18 +260,12 @@ public void readFrom(StreamInput in) throws IOException {
260260
parent = in.readOptionalString();
261261
preference = in.readOptionalString();
262262
refresh = in.readBoolean();
263-
int size = in.readInt();
264-
if (size >= 0) {
265-
fields = new String[size];
266-
for (int i = 0; i < size; i++) {
267-
fields[i] = in.readString();
268-
}
269-
}
263+
storedFields = in.readOptionalStringArray();
270264
realtime = in.readBoolean();
271265

272266
this.versionType = VersionType.fromValue(in.readByte());
273267
this.version = in.readLong();
274-
fetchSourceContext = in.readOptionalStreamable(FetchSourceContext::new);
268+
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
275269
}
276270

277271
@Override
@@ -284,18 +278,11 @@ public void writeTo(StreamOutput out) throws IOException {
284278
out.writeOptionalString(preference);
285279

286280
out.writeBoolean(refresh);
287-
if (fields == null) {
288-
out.writeInt(-1);
289-
} else {
290-
out.writeInt(fields.length);
291-
for (String field : fields) {
292-
out.writeString(field);
293-
}
294-
}
281+
out.writeOptionalStringArray(storedFields);
295282
out.writeBoolean(realtime);
296283
out.writeByte(versionType.getValue());
297284
out.writeLong(version);
298-
out.writeOptionalStreamable(fetchSourceContext);
285+
out.writeOptionalWriteable(fetchSourceContext);
299286
}
300287

301288
@Override

core/src/main/java/org/elasticsearch/action/get/GetRequestBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public GetRequestBuilder setPreference(String preference) {
8888
* Explicitly specify the fields that will be returned. By default, the <tt>_source</tt>
8989
* field will be returned.
9090
*/
91-
public GetRequestBuilder setFields(String... fields) {
92-
request.fields(fields);
91+
public GetRequestBuilder setStoredFields(String... fields) {
92+
request.storedFields(fields);
9393
return this;
9494
}
9595

core/src/main/java/org/elasticsearch/action/get/GetResponse.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,26 @@ public Map<String, Object> getSource() {
134134
return getResult.getSource();
135135
}
136136

137+
/**
138+
* @deprecated Use {@link GetResponse#getSource()} instead
139+
*/
140+
@Deprecated
137141
public Map<String, GetField> getFields() {
138142
return getResult.getFields();
139143
}
140144

145+
/**
146+
* @deprecated Use {@link GetResponse#getSource()} instead
147+
*/
148+
@Deprecated
141149
public GetField getField(String name) {
142150
return getResult.field(name);
143151
}
144152

153+
/**
154+
* @deprecated Use {@link GetResponse#getSource()} instead
155+
*/
156+
@Deprecated
145157
@Override
146158
public Iterator<GetField> iterator() {
147159
return getResult.iterator();

0 commit comments

Comments
 (0)