Search in sources :

Example 1 with SourceFieldVisitor

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());
    }
}
Also used : Doc(io.crate.expression.reference.Doc) UncheckedIOException(java.io.UncheckedIOException) Term(org.apache.lucene.index.Term) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) SourceFieldVisitor(io.crate.expression.reference.doc.lucene.SourceFieldVisitor) Engine(org.elasticsearch.index.engine.Engine) Nullable(javax.annotation.Nullable)

Aggregations

Doc (io.crate.expression.reference.Doc)1 SourceFieldVisitor (io.crate.expression.reference.doc.lucene.SourceFieldVisitor)1 IOException (java.io.IOException)1 UncheckedIOException (java.io.UncheckedIOException)1 Nullable (javax.annotation.Nullable)1 Term (org.apache.lucene.index.Term)1 Engine (org.elasticsearch.index.engine.Engine)1