Skip to content

Commit 4e81ae7

Browse files
authored
Remove deprecated IndexMetaData.getMappings() method (#47344)
With types removal in progress, an index can only have a single mapping. This commit removes the deprecated getMappings() method on IndexMetaData and converts all client code to use mapping() instead. Relates to #41059
1 parent dd22ea6 commit 4e81ae7

File tree

17 files changed

+71
-148
lines changed

17 files changed

+71
-148
lines changed

server/src/main/java/org/elasticsearch/cluster/ClusterState.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -467,14 +467,15 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
467467
builder.endObject();
468468

469469
builder.startObject("mappings");
470-
for (ObjectObjectCursor<String, MappingMetaData> cursor : indexMetaData.getMappings()) {
470+
MappingMetaData mmd = indexMetaData.mapping();
471+
if (mmd != null) {
471472
Map<String, Object> mapping = XContentHelper
472-
.convertToMap(new BytesArray(cursor.value.source().uncompressed()), false).v2();
473-
if (mapping.size() == 1 && mapping.containsKey(cursor.key)) {
473+
.convertToMap(new BytesArray(mmd.source().uncompressed()), false).v2();
474+
if (mapping.size() == 1 && mapping.containsKey(mmd.type())) {
474475
// the type name is the root value, reduce it
475-
mapping = (Map<String, Object>) mapping.get(cursor.key);
476+
mapping = (Map<String, Object>) mapping.get(mmd.type());
476477
}
477-
builder.field(cursor.key);
478+
builder.field(mmd.type());
478479
builder.map(mapping);
479480
}
480481
builder.endObject();

server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -486,17 +486,6 @@ public ImmutableOpenMap<String, AliasMetaData> getAliases() {
486486
return this.aliases;
487487
}
488488

489-
/**
490-
* Return an object that maps each type to the associated mappings.
491-
* The return value is never {@code null} but may be empty if the index
492-
* has no mappings.
493-
* @deprecated Use {@link #mapping()} instead now that indices have a single type
494-
*/
495-
@Deprecated
496-
public ImmutableOpenMap<String, MappingMetaData> getMappings() {
497-
return mappings;
498-
}
499-
500489
/**
501490
* Return the concrete mapping for this index or {@code null} if this index has no mappings at all.
502491
*/
@@ -944,13 +933,17 @@ public MappingMetaData mapping(String type) {
944933
return mappings.get(type);
945934
}
946935

936+
// TODO remove type here
947937
public Builder putMapping(String type, String source) throws IOException {
948938
putMapping(new MappingMetaData(type, XContentHelper.convertToMap(XContentFactory.xContent(source), source, true)));
949939
return this;
950940
}
951941

952942
public Builder putMapping(MappingMetaData mappingMd) {
953-
mappings.put(mappingMd.type(), mappingMd);
943+
mappings.clear();
944+
if (mappingMd != null) {
945+
mappings.put(mappingMd.type(), mappingMd);
946+
}
954947
return this;
955948
}
956949

@@ -1202,11 +1195,12 @@ public static void toXContent(IndexMetaData indexMetaData, XContentBuilder build
12021195
builder.endObject();
12031196

12041197
builder.startArray(KEY_MAPPINGS);
1205-
for (ObjectObjectCursor<String, MappingMetaData> cursor : indexMetaData.getMappings()) {
1198+
MappingMetaData mmd = indexMetaData.mapping();
1199+
if (mmd != null) {
12061200
if (binary) {
1207-
builder.value(cursor.value.source().compressed());
1201+
builder.value(mmd.source().compressed());
12081202
} else {
1209-
builder.map(XContentHelper.convertToMap(new BytesArray(cursor.value.source().uncompressed()), true).v2());
1203+
builder.map(XContentHelper.convertToMap(new BytesArray(mmd.source().uncompressed()), true).v2());
12101204
}
12111205
}
12121206
builder.endArray();

server/src/main/java/org/elasticsearch/index/mapper/MapperService.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.index.mapper;
2121

2222
import com.carrotsearch.hppc.ObjectHashSet;
23-
import com.carrotsearch.hppc.cursors.ObjectCursor;
2423
import org.apache.logging.log4j.LogManager;
2524
import org.apache.logging.log4j.message.ParameterizedMessage;
2625
import org.apache.lucene.analysis.Analyzer;
@@ -309,8 +308,8 @@ public DocumentMapper merge(String type, CompressedXContent mappingSource, Merge
309308
private synchronized Map<String, DocumentMapper> internalMerge(IndexMetaData indexMetaData,
310309
MergeReason reason, boolean onlyUpdateIfNeeded) {
311310
Map<String, CompressedXContent> map = new LinkedHashMap<>();
312-
for (ObjectCursor<MappingMetaData> cursor : indexMetaData.getMappings().values()) {
313-
MappingMetaData mappingMetaData = cursor.value;
311+
MappingMetaData mappingMetaData = indexMetaData.mapping();
312+
if (mappingMetaData != null) {
314313
if (onlyUpdateIfNeeded) {
315314
DocumentMapper existingMapper = documentMapper(mappingMetaData.type());
316315
if (existingMapper == null || mappingMetaData.source().equals(existingMapper.mappingSource()) == false) {

server/src/main/java/org/elasticsearch/index/shard/StoreRecovery.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
package org.elasticsearch.index.shard;
2121

22-
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
23-
2422
import org.apache.logging.log4j.Logger;
2523
import org.apache.lucene.index.IndexWriter;
2624
import org.apache.lucene.index.IndexWriterConfig;
@@ -111,8 +109,8 @@ boolean recoverFromLocalShards(BiConsumer<String, MappingMetaData> mappingUpdate
111109
throw new IllegalArgumentException("can't add shards from more than one index");
112110
}
113111
IndexMetaData sourceMetaData = shards.get(0).getIndexMetaData();
114-
for (ObjectObjectCursor<String, MappingMetaData> mapping : sourceMetaData.getMappings()) {
115-
mappingUpdateConsumer.accept(mapping.key, mapping.value);
112+
if (sourceMetaData.mapping() != null) {
113+
mappingUpdateConsumer.accept(sourceMetaData.mapping().type(), sourceMetaData.mapping());
116114
}
117115
indexShard.mapperService().merge(sourceMetaData, MapperService.MergeReason.MAPPING_RECOVERY);
118116
// now that the mapping is merged we can validate the index sort configuration.

server/src/main/java/org/elasticsearch/tasks/TaskResultsService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public void onFailure(Exception e) {
141141
}
142142

143143
private int getTaskResultMappingVersion(IndexMetaData metaData) {
144-
MappingMetaData mappingMetaData = metaData.getMappings().get(TASK_TYPE);
144+
MappingMetaData mappingMetaData = metaData.mapping();
145145
if (mappingMetaData == null) {
146146
return 0;
147147
}

server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataMappingServiceTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void testMappingClusterStateUpdateDoesntChangeExistingIndices() throws Ex
6262
// the task really was a mapping update
6363
assertThat(
6464
indexService.mapperService().documentMapper("type").mappingSource(),
65-
not(equalTo(result.resultingState.metaData().index("test").getMappings().get("type").source())));
65+
not(equalTo(result.resultingState.metaData().index("test").mapping().source())));
6666
// since we never committed the cluster state update, the in-memory state is unchanged
6767
assertThat(indexService.mapperService().documentMapper("type").mappingSource(), equalTo(currentMapping));
6868
}

server/src/test/java/org/elasticsearch/cluster/metadata/ToAndFromJsonMetaDataTests.java

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
155155
assertThat(indexMetaData.getNumberOfReplicas(), equalTo(2));
156156
assertThat(indexMetaData.getCreationDate(), equalTo(-1L));
157157
assertThat(indexMetaData.getSettings().size(), equalTo(3));
158-
assertThat(indexMetaData.getMappings().size(), equalTo(0));
158+
assertNull(indexMetaData.mapping());
159159

160160
indexMetaData = parsedMetaData.index("test2");
161161
assertThat(indexMetaData.getNumberOfShards(), equalTo(2));
@@ -166,22 +166,21 @@ public void testSimpleJsonFromAndTo() throws IOException {
166166
assertThat(indexMetaData.getSettings().size(), equalTo(5));
167167
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
168168
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
169-
assertThat(indexMetaData.getMappings().size(), equalTo(0));
169+
assertNull(indexMetaData.mapping());
170170

171171
indexMetaData = parsedMetaData.index("test3");
172172
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
173173
assertThat(indexMetaData.getNumberOfReplicas(), equalTo(2));
174174
assertThat(indexMetaData.getCreationDate(), equalTo(-1L));
175175
assertThat(indexMetaData.getSettings().size(), equalTo(3));
176-
assertThat(indexMetaData.getMappings().size(), equalTo(1));
177-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
176+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE1));
178177

179178
indexMetaData = parsedMetaData.index("test4");
180179
assertThat(indexMetaData.getCreationDate(), equalTo(2L));
181180
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
182181
assertThat(indexMetaData.getNumberOfReplicas(), equalTo(2));
183182
assertThat(indexMetaData.getSettings().size(), equalTo(4));
184-
assertThat(indexMetaData.getMappings().size(), equalTo(0));
183+
assertNull(indexMetaData.mapping());
185184

186185
indexMetaData = parsedMetaData.index("test5");
187186
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
@@ -190,9 +189,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
190189
assertThat(indexMetaData.getSettings().size(), equalTo(5));
191190
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
192191
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
193-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
194-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
195-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
192+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
196193

197194
indexMetaData = parsedMetaData.index("test6");
198195
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
@@ -201,16 +198,14 @@ public void testSimpleJsonFromAndTo() throws IOException {
201198
assertThat(indexMetaData.getSettings().size(), equalTo(6));
202199
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
203200
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
204-
assertThat(indexMetaData.getMappings().size(), equalTo(0));
201+
assertNull(indexMetaData.mapping());
205202

206203
indexMetaData = parsedMetaData.index("test7");
207204
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
208205
assertThat(indexMetaData.getNumberOfReplicas(), equalTo(2));
209206
assertThat(indexMetaData.getCreationDate(), equalTo(2L));
210207
assertThat(indexMetaData.getSettings().size(), equalTo(4));
211-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
212-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
213-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
208+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
214209

215210
indexMetaData = parsedMetaData.index("test8");
216211
assertThat(indexMetaData.getNumberOfShards(), equalTo(1));
@@ -219,9 +214,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
219214
assertThat(indexMetaData.getSettings().size(), equalTo(5));
220215
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
221216
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
222-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
223-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
224-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
217+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
225218
assertThat(indexMetaData.getAliases().size(), equalTo(2));
226219
assertThat(indexMetaData.getAliases().get("alias1").alias(), equalTo("alias1"));
227220
assertThat(indexMetaData.getAliases().get("alias2").alias(), equalTo("alias2"));
@@ -233,9 +226,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
233226
assertThat(indexMetaData.getSettings().size(), equalTo(6));
234227
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
235228
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
236-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
237-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
238-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
229+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
239230
assertThat(indexMetaData.getAliases().size(), equalTo(2));
240231
assertThat(indexMetaData.getAliases().get("alias1").alias(), equalTo("alias1"));
241232
assertThat(indexMetaData.getAliases().get("alias2").alias(), equalTo("alias2"));
@@ -247,9 +238,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
247238
assertThat(indexMetaData.getSettings().size(), equalTo(5));
248239
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
249240
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
250-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
251-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
252-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
241+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
253242
assertThat(indexMetaData.getAliases().size(), equalTo(2));
254243
assertThat(indexMetaData.getAliases().get("alias1").alias(), equalTo("alias1"));
255244
assertThat(indexMetaData.getAliases().get("alias2").alias(), equalTo("alias2"));
@@ -261,9 +250,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
261250
assertThat(indexMetaData.getSettings().size(), equalTo(5));
262251
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
263252
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
264-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
265-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
266-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
253+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
267254
assertThat(indexMetaData.getAliases().size(), equalTo(3));
268255
assertThat(indexMetaData.getAliases().get("alias1").alias(), equalTo("alias1"));
269256
assertThat(indexMetaData.getAliases().get("alias1").filter().string(), equalTo(ALIAS_FILTER1));
@@ -281,9 +268,7 @@ public void testSimpleJsonFromAndTo() throws IOException {
281268
assertThat(indexMetaData.getSettings().size(), equalTo(6));
282269
assertThat(indexMetaData.getSettings().get("setting1"), equalTo("value1"));
283270
assertThat(indexMetaData.getSettings().get("setting2"), equalTo("value2"));
284-
assertThat(indexMetaData.getMappings().size(), equalTo(2));
285-
assertThat(indexMetaData.getMappings().get("mapping1").source().string(), equalTo(MAPPING_SOURCE1));
286-
assertThat(indexMetaData.getMappings().get("mapping2").source().string(), equalTo(MAPPING_SOURCE2));
271+
assertThat(indexMetaData.mapping().source().string(), equalTo(MAPPING_SOURCE2));
287272
assertThat(indexMetaData.getAliases().size(), equalTo(3));
288273
assertThat(indexMetaData.getAliases().get("alias1").alias(), equalTo("alias1"));
289274
assertThat(indexMetaData.getAliases().get("alias1").filter().string(), equalTo(ALIAS_FILTER1));

server/src/test/java/org/elasticsearch/snapshots/SharedClusterSnapshotRestoreIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import org.elasticsearch.common.Strings;
6464
import org.elasticsearch.common.bytes.BytesArray;
6565
import org.elasticsearch.common.bytes.BytesReference;
66-
import org.elasticsearch.common.collect.ImmutableOpenMap;
6766
import org.elasticsearch.common.settings.Settings;
6867
import org.elasticsearch.common.unit.ByteSizeUnit;
6968
import org.elasticsearch.common.unit.TimeValue;
@@ -451,10 +450,9 @@ public void testRestoreWithDifferentMappingsAndSettings() throws Exception {
451450
assertThat(restoreSnapshotResponse.getRestoreInfo().totalShards(), greaterThan(0));
452451

453452
logger.info("--> assert that old mapping is restored");
454-
ImmutableOpenMap<String, MappingMetaData> mappings = client().admin().cluster().prepareState().get().getState().getMetaData()
455-
.getIndices().get("test-idx").getMappings();
456-
assertThat(mappings.get("foo"), notNullValue());
457-
assertThat(mappings.get("bar"), nullValue());
453+
MappingMetaData mappings = client().admin().cluster().prepareState().get().getState().getMetaData()
454+
.getIndices().get("test-idx").mapping();
455+
assertThat(mappings.type(), equalTo("foo"));
458456

459457
logger.info("--> assert that old settings are restored");
460458
GetSettingsResponse getSettingsResponse = client.admin().indices().prepareGetSettings("test-idx").execute().actionGet();

x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/ShardFollowTasksExecutor.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,12 @@ protected void innerUpdateMapping(long minRequiredMappingVersion, LongConsumer h
143143

144144
CcrRequests.getIndexMetadata(remoteClient, leaderIndex, minRequiredMappingVersion, 0L, timeout, ActionListener.wrap(
145145
indexMetaData -> {
146-
if (indexMetaData.getMappings().isEmpty()) {
146+
if (indexMetaData.mapping() == null) {
147147
assert indexMetaData.getMappingVersion() == 1;
148148
handler.accept(indexMetaData.getMappingVersion());
149149
return;
150150
}
151-
assert indexMetaData.getMappings().size() == 1 : "expected exactly one mapping, but got [" +
152-
indexMetaData.getMappings().size() + "]";
153-
MappingMetaData mappingMetaData = indexMetaData.getMappings().iterator().next().value;
151+
MappingMetaData mappingMetaData = indexMetaData.mapping();
154152
PutMappingRequest putMappingRequest = CcrRequests.putMappingRequest(followerIndex.getName(), mappingMetaData);
155153
followerClient.admin().indices().putMapping(putMappingRequest, ActionListener.wrap(
156154
putMappingResponse -> handler.accept(indexMetaData.getMappingVersion()),

x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/repository/CcrRepository.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
package org.elasticsearch.xpack.ccr.repository;
88

99
import com.carrotsearch.hppc.cursors.IntObjectCursor;
10-
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
1110
import org.apache.logging.log4j.LogManager;
1211
import org.apache.logging.log4j.Logger;
1312
import org.apache.logging.log4j.message.ParameterizedMessage;
@@ -209,10 +208,7 @@ public IndexMetaData getSnapshotIndexMetaData(SnapshotId snapshotId, IndexId ind
209208
imdBuilder.settings(leaderIndexMetaData.getSettings());
210209

211210
// Copy mappings from leader IMD to follow IMD
212-
for (ObjectObjectCursor<String, MappingMetaData> cursor : leaderIndexMetaData.getMappings()) {
213-
imdBuilder.putMapping(cursor.value);
214-
}
215-
211+
imdBuilder.putMapping(leaderIndexMetaData.mapping());
216212
imdBuilder.setRoutingNumShards(leaderIndexMetaData.getRoutingNumShards());
217213
// We assert that insync allocation ids are not empty in `PrimaryShardAllocator`
218214
for (IntObjectCursor<Set<String>> entry : leaderIndexMetaData.getInSyncAllocationIds()) {

0 commit comments

Comments
 (0)