use of io.crate.expression.reference.doc.lucene.SourceFieldVisitor in project crate by crate.
the class PKLookupOperation method lookupDoc.
@Nullable
public static Doc lookupDoc(IndexShard shard, String id, long version, VersionType versionType, long seqNo, long primaryTerm) {
Term uidTerm = new Term(IdFieldMapper.NAME, Uid.encodeId(id));
Engine.Get get = new Engine.Get(id, uidTerm).version(version).versionType(versionType).setIfSeqNo(seqNo).setIfPrimaryTerm(primaryTerm);
try (Engine.GetResult getResult = shard.get(get)) {
var docIdAndVersion = getResult.docIdAndVersion();
if (docIdAndVersion == null) {
return null;
}
SourceFieldVisitor visitor = new SourceFieldVisitor();
try {
docIdAndVersion.reader.document(docIdAndVersion.docId, visitor);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return new Doc(docIdAndVersion.docId, shard.shardId().getIndexName(), id, docIdAndVersion.version, docIdAndVersion.seqNo, docIdAndVersion.primaryTerm, XContentHelper.toMap(visitor.source(), XContentType.JSON), () -> visitor.source().utf8ToString());
}
}
Aggregations