diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/get/ShardGetService.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/index/get/ShardGetService.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/get/ShardGetService.java b/core/src/main/java/org/elasticsearch/index/get/ShardGetService.java index 32e21be032..51391061a6 100644 --- a/core/src/main/java/org/elasticsearch/index/get/ShardGetService.java +++ b/core/src/main/java/org/elasticsearch/index/get/ShardGetService.java @@ -50,6 +50,7 @@ import org.elasticsearch.index.mapper.internal.UidFieldMapper; import org.elasticsearch.index.shard.AbstractIndexShardComponent; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.translog.Translog; +import org.elasticsearch.search.fetch.parent.ParentFieldSubFetchPhase; import org.elasticsearch.search.fetch.source.FetchSourceContext; import org.elasticsearch.search.lookup.LeafSearchLookup; import org.elasticsearch.search.lookup.SearchLookup; @@ -111,7 +112,7 @@ public final class ShardGetService extends AbstractIndexShardComponent { */ public GetResult get(Engine.GetResult engineGetResult, String id, String type, String[] fields, FetchSourceContext fetchSourceContext, boolean ignoreErrorsOnGeneratedFields) { if (!engineGetResult.exists()) { - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } currentMetric.inc(); @@ -120,7 +121,7 @@ public final class ShardGetService extends AbstractIndexShardComponent { DocumentMapper docMapper = mapperService.documentMapper(type); if (docMapper == null) { missingMetric.inc(System.nanoTime() - now); - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } fetchSourceContext = normalizeFetchSourceContent(fetchSourceContext, fields); GetResult getResult = innerGetLoadFromStoredFields(type, id, fields, fetchSourceContext, engineGetResult, docMapper, ignoreErrorsOnGeneratedFields); @@ -169,25 +170,25 @@ public final class ShardGetService extends AbstractIndexShardComponent { } } if (get == null) { - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } if (!get.exists()) { // no need to release here as well..., we release in the for loop for non exists - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } } else { get = indexShard.get(new Engine.Get(realtime, new Term(UidFieldMapper.NAME, Uid.createUidAsBytes(type, id))) .version(version).versionType(versionType)); if (!get.exists()) { get.release(); - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } } DocumentMapper docMapper = mapperService.documentMapper(type); if (docMapper == null) { get.release(); - return new GetResult(shardId.index().name(), type, id, -1, false, null, null); + return new GetResult(shardId.getIndexName(), type, id, -1, false, null, null); } try { @@ -301,7 +302,7 @@ public final class ShardGetService extends AbstractIndexShardComponent { } } - return new GetResult(shardId.index().name(), type, id, get.version(), get.exists(), sourceToBeReturned, fields); + return new GetResult(shardId.getIndexName(), type, id, get.version(), get.exists(), sourceToBeReturned, fields); } } finally { get.release(); @@ -350,6 +351,14 @@ public final class ShardGetService extends AbstractIndexShardComponent { } } + if (docMapper.parentFieldMapper().active()) { + String parentId = ParentFieldSubFetchPhase.getParentId(docMapper.parentFieldMapper(), docIdAndVersion.context.reader(), docIdAndVersion.docId); + if (fields == null) { + fields = new HashMap<>(1); + } + fields.put(ParentFieldMapper.NAME, new GetField(ParentFieldMapper.NAME, Collections.singletonList(parentId))); + } + // now, go and do the script thingy if needed if (gFields != null && gFields.length > 0) { @@ -409,7 +418,7 @@ public final class ShardGetService extends AbstractIndexShardComponent { } } - return new GetResult(shardId.index().name(), type, id, get.version(), get.exists(), source, fields); + return new GetResult(shardId.getIndexName(), type, id, get.version(), get.exists(), source, fields); } private static FieldsVisitor buildFieldsVisitors(String[] fields, FetchSourceContext fetchSourceContext) { |