Skip to content

Commit 9d8afe6

Browse files
authored
IndexMetaData#mappingOrDefault doesn't need to take a type argument. (#37480)
Currently it takes a type, but this isn't really needed now that indices can have at most one type. The only downside is that we might return a different error when trying to index into a type that doesnt't exist yet.
1 parent 21a88d5 commit 9d8afe6

File tree

4 files changed

+46
-7
lines changed

4 files changed

+46
-7
lines changed

server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ protected void doRun() throws Exception {
351351
case INDEX:
352352
IndexRequest indexRequest = (IndexRequest) docWriteRequest;
353353
final IndexMetaData indexMetaData = metaData.index(concreteIndex);
354-
MappingMetaData mappingMd = indexMetaData.mappingOrDefault(indexRequest.type());
354+
MappingMetaData mappingMd = indexMetaData.mappingOrDefault();
355355
Version indexCreated = indexMetaData.getCreationVersion();
356356
indexRequest.resolveRouting(metaData);
357357
indexRequest.process(indexCreated, mappingMd, concreteIndex.getName());

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ static void executeBulkItemRequest(BulkPrimaryExecutionContext context, UpdateHe
191191
case UPDATED:
192192
IndexRequest indexRequest = updateResult.action();
193193
IndexMetaData metaData = context.getPrimary().indexSettings().getIndexMetaData();
194-
MappingMetaData mappingMd = metaData.mappingOrDefault(indexRequest.type());
194+
MappingMetaData mappingMd = metaData.mappingOrDefault();
195195
indexRequest.process(metaData.getCreationVersion(), mappingMd, updateRequest.concreteIndex());
196196
context.setRequestToExecute(indexRequest);
197197
break;

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -505,12 +505,15 @@ public Index getResizeSourceIndex() {
505505
* setting its routing, timestamp, and so on if needed.
506506
*/
507507
@Nullable
508-
public MappingMetaData mappingOrDefault(String mappingType) {
509-
MappingMetaData mapping = mappings.get(mappingType);
510-
if (mapping != null) {
511-
return mapping;
508+
public MappingMetaData mappingOrDefault() {
509+
MappingMetaData mapping = null;
510+
for (ObjectCursor<MappingMetaData> m : mappings.values()) {
511+
if (mapping == null || mapping.type().equals(MapperService.DEFAULT_MAPPING)) {
512+
mapping = m.value;
513+
}
512514
}
513-
return mappings.get(MapperService.DEFAULT_MAPPING);
515+
516+
return mapping;
514517
}
515518

516519
ImmutableOpenMap<String, DiffableStringMap> getCustomData() {

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.elasticsearch.cluster.metadata;
2121

22+
import org.elasticsearch.Version;
2223
import org.elasticsearch.action.admin.indices.rollover.MaxAgeCondition;
2324
import org.elasticsearch.action.admin.indices.rollover.MaxDocsCondition;
2425
import org.elasticsearch.action.admin.indices.rollover.MaxSizeCondition;
@@ -39,6 +40,7 @@
3940
import org.elasticsearch.common.xcontent.XContentBuilder;
4041
import org.elasticsearch.common.xcontent.XContentParser;
4142
import org.elasticsearch.common.xcontent.json.JsonXContent;
43+
import org.elasticsearch.index.mapper.MapperService;
4244
import org.elasticsearch.index.shard.ShardId;
4345
import org.elasticsearch.indices.IndicesModule;
4446
import org.elasticsearch.test.ESTestCase;
@@ -287,4 +289,38 @@ public void testNumberOfRoutingShards() {
287289
() -> IndexMetaData.INDEX_NUMBER_OF_ROUTING_SHARDS_SETTING.get(notAFactorySettings));
288290
assertEquals("the number of source shards [2] must be a factor of [3]", iae.getMessage());
289291
}
292+
293+
public void testMappingOrDefault() throws IOException {
294+
Settings settings = Settings.builder()
295+
.put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT)
296+
.put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 2)
297+
.put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 1)
298+
.build();
299+
IndexMetaData meta = IndexMetaData.builder("index")
300+
.settings(settings)
301+
.build();
302+
assertNull(meta.mappingOrDefault());
303+
304+
meta = IndexMetaData.builder("index")
305+
.settings(settings)
306+
.putMapping("type", "{}")
307+
.build();
308+
assertNotNull(meta.mappingOrDefault());
309+
assertEquals("type", meta.mappingOrDefault().type());
310+
311+
meta = IndexMetaData.builder("index")
312+
.settings(settings)
313+
.putMapping(MapperService.DEFAULT_MAPPING, "{}")
314+
.build();
315+
assertNotNull(meta.mappingOrDefault());
316+
assertEquals(MapperService.DEFAULT_MAPPING, meta.mappingOrDefault().type());
317+
318+
meta = IndexMetaData.builder("index")
319+
.settings(settings)
320+
.putMapping("type", "{}")
321+
.putMapping(MapperService.DEFAULT_MAPPING, "{}")
322+
.build();
323+
assertNotNull(meta.mappingOrDefault());
324+
assertEquals("type", meta.mappingOrDefault().type());
325+
}
290326
}

0 commit comments

Comments
 (0)