Class RangeQuery<K,V>

java.lang.Object
org.apache.kafka.streams.query.RangeQuery<K,V>
Type Parameters:
K - Type of keys
V - Type of values
All Implemented Interfaces:
Query<KeyValueIterator<K,V>>

@Evolving public final class RangeQuery<K,V> extends Object implements Query<KeyValueIterator<K,V>>
Interactive query for issuing range queries and scans over KeyValue stores.

A range query retrieves a set of records, specified using an upper and/or lower bound on the keys.

A scan query retrieves all records contained in the store.

Keys' order is based on the serialized byte[] of the keys, not the 'logical' key order.

  • Method Details

    • withRange

      public static <K, V> RangeQuery<K,V> withRange(K lower, K upper)
      Interactive range query using a lower and upper bound to filter the keys returned.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      lower - The key that specifies the lower bound of the range
      upper - The key that specifies the upper bound of the range
    • resultOrder

      public ResultOrder resultOrder()
      Determines if the serialized byte[] of the keys in ascending or descending or unordered order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      return the order of returned records based on the serialized byte[] of the keys (can be unordered, or in ascending or in descending order).
    • withDescendingKeys

      public RangeQuery<K,V> withDescendingKeys()
      Set the query to return the serialized byte[] of the keys in descending order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      a new RangeQuery instance with descending flag set.
    • withAscendingKeys

      public RangeQuery<K,V> withAscendingKeys()
      Set the query to return the serialized byte[] of the keys in ascending order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      a new RangeQuery instance with ascending flag set.
    • withUpperBound

      public static <K, V> RangeQuery<K,V> withUpperBound(K upper)
      Interactive range query using an upper bound to filter the keys returned. If both <K,V> are null, RangQuery returns a full range scan.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      upper - The key that specifies the upper bound of the range
    • withLowerBound

      public static <K, V> RangeQuery<K,V> withLowerBound(K lower)
      Interactive range query using a lower bound to filter the keys returned.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      lower - The key that specifies the lower bound of the range
    • withNoBounds

      public static <K, V> RangeQuery<K,V> withNoBounds()
      Interactive scan query that returns all records in the store.
      Type Parameters:
      K - The key type
      V - The value type
    • getLowerBound

      public Optional<K> getLowerBound()
      The lower bound of the query, if specified.
    • getUpperBound

      public Optional<K> getUpperBound()
      The upper bound of the query, if specified