All Products
Search
Document Center

OpenSearch:Parse ProtoBuf-format results

Last Updated:Feb 28, 2024

The returned results in the Protocol Buffers (ProtoBuf) format must be deserialized into PBResults before the results can be used. The following example describes the PBResults in the PBResult.proto file:

package isearch.common;
option cc_enable_arenas = true;

message PBAttrKVPair {
    optional string key = 1;
    repeated int64 int64Value = 2;
    repeated double doubleValue = 3;
    repeated bytes bytesValue = 4;
}

enum ValueType {
    ATTRIBUTE_TYPE = 0;
    VARIABLE_VALUE_TYPE = 1;
}

message PBInt64Attribute {
    optional string key = 1;
    optional ValueType type = 2;
    repeated int64 int64Value = 3;
    repeated uint32 offset = 4;
}

message PBDoubleAttribute {
    optional string key = 1;
    optional ValueType type = 2;
    repeated double doubleValue = 3;
    repeated uint32 offset = 4;
}

message PBBytesAttribute {
    optional string key = 1;
    optional ValueType type = 2;
    repeated bytes bytesValue = 3;
    repeated uint32 offset = 4;
}

message SortExprssionMeta {
    optional bool sortFlag = 1;
    optional string sortExprName = 2;
}

message PBSortValues {
    optional uint32 dimensionCount = 1;
    repeated double sortValues = 2;
    repeated SortExprssionMeta sortExprMetas = 3;
}

message PBKVPair {
    optional string key = 1;
    optional bytes value = 2;
}

message PBResult
{
    optional uint64 totalTime = 1;
    optional PBHits hits = 2;
    repeated PBAggregateResults aggResults = 3;
    repeated PBErrorResult errorResults = 4;
    optional bytes tracer = 5;
    optional bool fromCache = 6;
    optional PBMatchDocs matchDocs = 7;
    repeated PBMetaMap metaMap = 8;
}

message PBMatchDocs
{
    optional uint32 numMatchDocs = 1;
    optional uint32 totalMatchDocs = 2;
    repeated string clusterNames = 3;
    repeated uint32 clusterIds = 4;
    repeated uint32 hashids = 5;
    repeated uint32 docids = 6;
    repeated int32 fullIndexVersions = 7;
    repeated int32 indexVersions = 8;
    repeated uint64 pkHighers = 9;
    repeated uint64 pkLowers = 10;
    repeated uint32 searcherIps = 11;
    repeated bytes tracers = 12;
    repeated PBInt64Attribute int64AttrValues = 13;
    repeated PBDoubleAttribute doubleAttrValues = 14;
    repeated PBBytesAttribute bytesAttrValues = 15;
    optional PBSortValues sortValues = 16;
}

message PBHits
{
    optional uint32 numhits = 1;
    optional uint32 totalHits = 2;
    repeated PBHit hit = 3;
    repeated PBMetaHitMap metaHitMap = 4;
    optional double coveredPercent = 5;
    repeated SortExprssionMeta sortExprMetas = 6;
}

message PBHit {
    optional string clusterName = 1;
    optional uint32 hashid = 2;
    optional uint32 docid = 3;
    optional int32 fullIndexVersion = 4;
    optional int32 indexVersion = 5;
    optional uint64 pkHigher = 6;
    optional uint64 pkLower = 7;
    repeated PBAttrKVPair attributes = 8;
    repeated PBAttrKVPair variableValues = 9;
    repeated PBKVPair summary = 10;
    repeated PBKVPair property = 11;
    repeated string sortValues = 12;
    optional bytes tracer = 13;
    optional uint32 searcherIp = 14;
    optional string rawPk = 15;
    optional bytes summaryBytes = 16;
}

message PBMetaHitMap
{
    optional string metaHitKey = 1;
    repeated PBKVPair metaHitValue = 2;
}

message PBAggregateResults
{
    optional string aggregateKey = 1;
    repeated PBAggregateValue aggregateValue = 2;
}

message PBAggregateValue
{
    optional string groupValue = 1;
    repeated PBKVPair funNameResultPair = 2;
}

message PBErrorResult
{
    optional string partitionId = 1;
    optional string hostName = 2;
    optional uint32 errorCode = 3;
    optional string errorDescription = 4;
}

message PBMetaMap
{
    optional string metaKey = 1;
    repeated PBKVPair metaValue = 2;
}