The PyReindexer module provides a connector and its auxiliary tools for interaction with Reindexer. Reindexer static library or reindexer-dev package must be installed
- The PyReindexer module provides a connector and its auxiliary tools for interaction with Reindexer. Reindexer static library or reindexer-dev package must be installed
- pyreindexer.rx_connector
- RxConnector Objects
- Arguments:
- Attributes:
- RxConnector.close
- RxConnector.namespace_open
- RxConnector.namespace_close
- RxConnector.namespace_drop
- RxConnector.namespaces_enum
- RxConnector.index_add
- RxConnector.index_update
- RxConnector.index_drop
- RxConnector.item_insert
- RxConnector.item_update
- RxConnector.item_upsert
- RxConnector.item_delete
- RxConnector.meta_put
- RxConnector.meta_get
- RxConnector.meta_delete
- RxConnector.meta_enum
- RxConnector.exec_sql
- RxConnector.new_transaction
- RxConnector.new_query
- RxConnector Objects
- pyreindexer.query_results
- pyreindexer.transaction
- pyreindexer.point
- pyreindexer.query
- Query Objects
- Attributes:
- Query.where
- Query.where_query
- Query.where_subquery
- Query.where_composite
- Query.where_uuid
- Query.where_between_fields
- Query.where_knn
- Query.where_knn_string
- Query.open_bracket
- Query.close_bracket
- Query.match
- Query.dwithin
- Query.distinct
- Query.aggregate_sum
- Query.aggregate_avg
- Query.aggregate_min
- Query.aggregate_max
- Query.aggregate_facet
- Query.sort
- Query.sort_stpoint_distance
- Query.sort_stfield_distance
- Query.op_and
- Query.op_or
- Query.op_not
- Query.request_total
- Query.cached_total
- Query.limit
- Query.offset
- Query.debug
- Query.strict
- Query.explain
- Query.with_rank
- Query.execute
- Query.delete
- Query.set_object
- Query.set
- Query.drop
- Query.expression
- Query.update
- Query.must_execute
- Query.get
- Query.inner_join
- Query.join
- Query.left_join
- Query.merge
- Query.on
- Query.select_fields
- Query.functions
- Query.equal_position
- Query Objects
- pyreindexer.index_search_params
- pyreindexer.index_definition
class RxConnector(RaiserMixin)RxConnector provides a binding to Reindexer upon two shared libraries (hereinafter - APIs): 'rawpyreindexerb.so' and 'rawpyreindexerc.so'. The first one is aimed at built-in usage. That API embeds Reindexer, so it could be used right in-place as is. The second one acts as a lightweight client which establishes a connection to Reindexer server via RPC. The APIs interfaces are completely the same.
dsn (string): The connection string which contains a protocol
Examples: 'builtin:///tmp/pyrx', 'cproto://127.0.0.1:6534/pyrx'
cproto options:
fetch_amount (int): The number of items that will be fetched by one operation
reconnect_attempts (int): Number of reconnection attempts when connection is lost
net_timeout (`datetime.timedelta`): Connection and database login timeout value [milliseconds]
enable_compression (bool): Flag enable/disable traffic compression
start_special_thread (bool): Determines whether to request a special thread of execution
on the server for this connection
client_name (string): Proper name of the application (as a client for Reindexer-server)
sync_rxcoro_count (int): Client concurrency per connection [1..10'000], default 10
built-in options:
max_replication_updates_size (int): Max pended replication updates size in bytes
allocator_cache_limit (int): Recommended maximum free cache size of tcmalloc memory allocator in bytes
allocator_cache_part (float): Recommended maximum free cache size of tcmalloc memory allocator in
relation to total Reindexer allocated memory size, in units
api (module): An API module loaded dynamically for Reindexer calls
rx (int): A memory pointer to the Reindexer instance
err_code (int): The API error code
err_msg (string): The API error message
def close() -> NoneCloses the API instance and frees Reindexer resources
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
def namespace_open(
namespace: str, timeout: timedelta = timedelta(milliseconds=0)) -> NoneOpens a namespace specified or creates a namespace if it does not exist
namespace (string): The name of the namespace
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def namespace_close(
namespace: str, timeout: timedelta = timedelta(milliseconds=0)) -> NoneCloses the specified namespace
namespace (string): The name of the namespace
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def namespace_drop(
namespace: str, timeout: timedelta = timedelta(milliseconds=0)) -> NoneDrops the specified namespace
namespace (string): The name of the namespace
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
Exception: Raises with an error message when Reindexer instance is not initialized yet
Exception: Raises with an error message of API return on non-zero error code
def namespaces_enum(
enum_not_opened: bool = False,
timeout: timedelta = timedelta(milliseconds=0)
) -> List[Dict[str, str]]Gets a list of namespaces available
enum_not_opened (bool, optional): An enumeration mode flag. If it is
set then closed namespaces are in result list too. Defaults to False
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`list` of :obj:`dict`): A list of dictionaries which describe each namespace
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_add(
namespace: str,
index_def: Dict,
timeout: timedelta = timedelta(milliseconds=0)) -> NoneAdds an index to the specified namespace
namespace (string): The name of the namespace
index_def (dict): A dictionary of index definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_update(
namespace: str,
index_def: Dict,
timeout: timedelta = timedelta(milliseconds=0)) -> NoneUpdates an index in the specified namespace
namespace (string): The name of the namespace
index_def (dict): A dictionary of index definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_drop(
namespace: str,
index_name: str,
timeout: timedelta = timedelta(milliseconds=0)) -> NoneDrops an index from the specified namespace
namespace (string): The name of the namespace
index_name (string): A name of an index
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_insert(
namespace: str,
item_def: Dict,
precepts: List[str] = None,
timeout: timedelta = timedelta(milliseconds=0)
) -> NoneInserts an item with its precepts into the specified namespace
namespace (string): The name of the namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_update(
namespace: str,
item_def: Dict,
precepts: List[str] = None,
timeout: timedelta = timedelta(milliseconds=0)
) -> NoneUpdates an item with its precepts in the specified namespace
namespace (string): The name of the namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_upsert(
namespace: str,
item_def: Dict,
precepts: List[str] = None,
timeout: timedelta = timedelta(milliseconds=0)
) -> NoneUpdates an item with its precepts in the specified namespace. Creates the item if it does not exist
namespace (string): The name of the namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_delete(
namespace: str,
item_def: Dict,
timeout: timedelta = timedelta(milliseconds=0)) -> NoneDeletes an item from the namespace specified
namespace (string): The name of the namespace
item_def (dict): A dictionary of item definition
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_put(
namespace: str,
key: str,
value: str,
timeout: timedelta = timedelta(milliseconds=0)) -> NonePuts metadata to a storage of Reindexer by key
namespace (string): The name of the namespace
key (string): A key in a storage of Reindexer for metadata keeping
value (string): A metadata for storage
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_get(namespace: str,
key: str,
timeout: timedelta = timedelta(milliseconds=0)) -> strGets metadata from a storage of Reindexer by key specified
namespace (string): The name of the namespace
key (string): A key in a storage of Reindexer where metadata is kept
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
string: A metadata value
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_delete(
namespace: str, key: str,
timeout: timedelta = timedelta(milliseconds=0)) -> NoneDeletes metadata from a storage of Reindexer by key specified
namespace (string): The name of the namespace
key (string): A key in a storage of Reindexer where metadata is kept
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_enum(
namespace: str,
timeout: timedelta = timedelta(milliseconds=0)) -> List[str]Gets a list of metadata keys from a storage of Reindexer
namespace (string): The name of the namespace
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`list` of :obj:`str`): A list of all metadata keys
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def exec_sql(
query: str,
timeout: timedelta = timedelta(milliseconds=0)) -> QueryResultsExecutes an SQL query and returns query results
query (string): An SQL query
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`QueryResults`): A QueryResults iterator
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def new_transaction(
namespace: str,
timeout: timedelta = timedelta(milliseconds=0)) -> TransactionStarts a new transaction and return the transaction object to processing. Warning: once a timeout is set, it will apply to all subsequent steps in the transaction
namespace (string): The name of the namespace
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`Transaction`): A new transaction
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def new_query(namespace: str) -> QueryCreates a new query and return the query object to processing
namespace (string): The name of the namespace
(:obj:`Query`): A new query
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
class QueryResults()QueryResults is a disposable iterator of Reindexer results for such queries as SELECT etc. When the results are fetched the iterator closes and frees a memory of results buffer of Reindexer
api (module): An API module for Reindexer calls
err_code (int): The API error code
err_msg (string): The API error message
qres_wrapper_ptr (int): A memory pointer to Reindexer iterator object
qres_iter_count (int): A count of results for iterations
pos (int): The current result position in iterator
def status() -> NoneCheck status
ApiError: Raises with an error message of API return on non-zero error code
def count() -> intReturns a count of results for iterations
int: A count of results
def total_count() -> intReturns a total or cached count of results
int: A total or cached count of results
def get_agg_results() -> dictReturns aggregation results for the current query
(:obj:`dict`): Dictionary with all results for the current query
ApiError: Raises with an error message of API return on non-zero error code
def get_explain_results() -> strReturns explain results for the current query
(string): Formatted string with explain of results for the current query
ApiError: Raises with an error message of API return on non-zero error code
class Transaction()An object representing the context of a Reindexer transaction
api (module): An API module for Reindexer calls
transaction_wrapper_ptr (int): A memory pointer to Reindexer transaction object
err_code (int): The API error code
err_msg (string): The API error message
def insert(item_def: Dict, precepts: List[str] = None) -> NoneInserts an item with its precepts to the transaction Warning: the timeout set when the transaction was created is used
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def update(item_def: Dict, precepts: List[str] = None) -> NoneUpdates an item with its precepts to the transaction Warning: the timeout set when the transaction was created is used
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def update_query(query: Query) -> NoneUpdates items with the transaction Read-committed isolation is available for read operations. Changes made in active transaction is invisible to current and another transactions.
query (:obj:`Query`): A query object to modify
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def upsert(item_def: Dict, precepts: List[str] = None) -> NoneUpdates an item with its precepts to the transaction. Creates the item if it does not exist Warning: the timeout set when the transaction was created is used
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def delete(item_def: Dict) -> NoneDeletes an item from the transaction Warning: the timeout set when the transaction was created is used
item_def (dict): A dictionary of item definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def delete_query(query: Query)Deletes items with the transaction Read-committed isolation is available for read operations. Changes made in active transaction is invisible to current and another transactions.
query (:obj:`Query`): A query object to modify
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def commit(timeout: timedelta = timedelta(milliseconds=0)) -> NoneApplies changes
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def commit_with_count(timeout: timedelta = timedelta(milliseconds=0)) -> intApplies changes and return the number of count of changed items
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def rollback(timeout: timedelta = timedelta(milliseconds=0)) -> NoneRollbacks changes
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
class Point()An object representing the context of a Reindexer 2D point
x (float): x coordinate of the point
y (float): y coordinate of the point
class Query()An object representing the context of a Reindexer query
api (module): An API module for Reindexer calls
query_wrapper_ptr (int): A memory pointer to Reindexer query object
err_code (int): The API error code
err_msg (string): The API error message
root (:object: Optional[`Query`]): The root query of the Reindexer query
join_queries (list[:object:`Query`]): The list of join Reindexer query objects
merged_queries (list[:object:`Query`]): The list of merged Reindexer query objects
def where(
index: str,
condition: CondType,
keys: Union[simple_types, tuple[list[simple_types],
...]] = None) -> QueryAdds where condition to DB query with args
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (union[simple_types, (list[simple_types], ...)]):
Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_query(
sub_query: Query,
condition: CondType,
keys: Union[simple_types, tuple[list[simple_types],
...]] = None) -> QueryAdds sub-query where condition to DB query with args
sub_query (:obj:`Query`): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (union[simple_types, (list[simple_types], ...)]):
Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_subquery(index: str, condition: CondType, sub_query: Query) -> QueryAdds sub-query where condition to DB query
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
sub_query (:obj:`Query`): Field name used in condition clause
(:obj:`Query`): Query object for further customizations
def where_composite(index: str, condition: CondType,
keys: tuple[list[simple_types], ...]) -> QueryAdds where condition to DB query with interface args for composite indexes
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (list[simple_types], ...): Values of composite index to be compared with (value of each sub-index).
Supported variants:
([1, "test1"], [2, "test2"])
[[1, "test1"], [2, "test2"]])
([1, "testval1"], )
[[1, "testval1"]]
(1, "testval1")
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_uuid(index: str, condition: CondType, *uuids: UUID) -> QueryAdds where condition to DB query with UUID.
index MUST be declared as uuid-string index in this case
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
uuids (*:obj:`UUID`): Value of index to be compared with. For composite indexes uuids must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_between_fields(first_field: str, condition: CondType,
second_field: str) -> QueryAdds comparing two fields where condition to DB query
first_field (string): First field name used in condition clause
condition (:enum:`CondType`): Type of condition
second_field (string): Second field name used in condition clause
(:obj:`Query`): Query object for further customizations
def where_knn(
index: str, vec: List[float],
param: Union[IndexSearchParamBruteForce | IndexSearchParamHnsw | IndexSearchParamIvf]
) -> QueryAdds where condition to DB query with float_vector as args.
index MUST be declared as float_vector index in this case
index (string): Field name used in condition clause (only float_vector)
vec (list[float]): KNN value of index to be compared with
param (:obj:`union[IndexSearchParamBruteForce|IndexSearchParamHnsw|IndexSearchParamIvf]`): KNN search parameters
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message if no vec are specified
QueryError: Raises with an error message if no param are specified or have an invalid value
ApiError: Raises with an error message of API return on non-zero error code
def where_knn_string(
index: str, value: str,
param: Union[IndexSearchParamBruteForce | IndexSearchParamHnsw | IndexSearchParamIvf]
) -> QueryAdds where condition to DB query with string as args.
index MUST be declared as float_vector index in this case.
WARNING: Only relevant if automatic embedding is configured for this float_vector index
index (string): Field name used in condition clause (only float_vector)
value (string): value to be generated using automatic embedding of KNN index value to be compared to
param (:obj:`union[IndexSearchParamBruteForce|IndexSearchParamHnsw|IndexSearchParamIvf]`): KNN search parameters
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message if no value are specified
QueryError: Raises with an error message if no param are specified or have an invalid value
ApiError: Raises with an error message of API return on non-zero error code
def open_bracket() -> QueryOpens bracket for where condition to DB query
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def close_bracket() -> QueryCloses bracket for where condition to DB query
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def match(index: str, *keys: str) -> QueryAdds string EQ-condition to DB query with string args
index (string): Field name used in condition clause
keys (*string): Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def dwithin(index: str, point: Point, distance: float) -> QueryAdds DWithin condition to DB query
index (string): Field name used in condition clause
point (:obj:`Point`): Point object used in condition clause
distance (float): Distance in meters between point
(:obj:`Query`): Query object for further customizations
def distinct(index: str) -> QueryPerforms distinct for a certain index. Return only items with uniq value of field
index (string): Field name for distinct operation
(:obj:`Query`): Query object for further customizations
def aggregate_sum(index: str) -> QueryPerforms a summation of values for a specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_avg(index: str) -> QueryFinds for the average at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_min(index: str) -> QueryFinds for the minimum at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_max(index: str) -> QueryFinds for the maximum at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_facet(*fields: str) -> Query._AggregateFacetGets fields facet value. Applicable to multiple data fields and the result of that could be sorted
by any data column or count and cut off by offset and limit. In order to support this functionality
this method returns AggregationFacetRequest which has methods sort, limit and offset
fields (*string): Fields any data column name or `count`, fields should not be empty
(:obj:`_AggregateFacet`): Request object for further customizations
def sort(
index: str,
desc: bool = False,
forced_sort_values: Union[simple_types, tuple[list[simple_types],
...]] = None
) -> QueryApplies sort order to return from query items. If forced_sort_values argument specified, then items equal to values, if found will be placed in the top positions. Forced sort is support for the first sorting field only
index (string): The index name
desc (bool): Sort in descending order
forced_sort_values (union[simple_types, (list[simple_types], ...)]):
Value of index to match. For composite indexes keys must be list, with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def sort_stpoint_distance(index: str, point: Point, desc: bool) -> QueryApplies geometry sort order to return from query items. Wrapper for geometry sorting by shortest distance between geometry field and point (ST_Distance)
index (string): The index name
point (:obj:`Point`): Point object used in sorting operation
desc (bool): Sort in descending order
(:obj:`Query`): Query object for further customizations
def sort_stfield_distance(first_field: str, second_field: str,
desc: bool) -> QueryApplies geometry sort order to return from query items. Wrapper for geometry sorting by shortest distance between 2 geometry fields (ST_Distance)
first_field (string): First field name used in condition
second_field (string): Second field name used in condition
desc (bool): Sort in descending order
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def op_and() -> QueryNext condition will be added with AND. This is the default operation for WHERE statement. Do not have to be called explicitly in user's code. Used in DSL conversion
(:obj:`Query`): Query object for further customizations
def op_or() -> QueryNext condition will be added with OR. Implements short-circuiting: if the previous condition is successful the next will not be evaluated, but except Join conditions
(:obj:`Query`): Query object for further customizations
def op_not() -> QueryNext condition will be added with NOT AND. Implements short-circuiting: if the previous condition is failed the next will not be evaluated
(:obj:`Query`): Query object for further customizations
def request_total() -> QueryRequests total items calculation
total_name (string, optional): Name to be requested
(:obj:`Query`): Query object for further customizations
def cached_total() -> QueryRequests cached total items calculation
total_name (string, optional): Name to be requested
(:obj:`Query`): Query object for further customizations
def limit(limit_items: int) -> QuerySets a limit (count) of returned items. Analog to sql LIMIT rowsNumber
limit_items (int): Number of rows to get from result set
(:obj:`Query`): Query object for further customizations
def offset(start_offset: int) -> QuerySets the number of the first selected row from result query
limit_items (int): Index of the first row to get from result set
(:obj:`Query`): Query object for further customizations
def debug(level: LogLevel) -> QueryChanges debug log level on server
level (:enum:`LogLevel`): Debug log level on server
(:obj:`Query`): Query object for further customizations
def strict(mode: StrictMode) -> QueryChanges strict mode
mode (:enum:`StrictMode`): Strict mode
(:obj:`Query`): Query object for further customizations
def explain() -> QueryEnables explain query
(:obj:`Query`): Query object for further customizations
def with_rank() -> QueryOutputs fulltext/float_vector rank. Allowed only with fulltext and KNN query
(:obj:`Query`): Query object for further customizations
def execute(timeout: timedelta = timedelta(milliseconds=0)) -> QueryResultsExecutes a select query
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`QueryResults`): A QueryResults iterator
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def delete(timeout: timedelta = timedelta(milliseconds=0)) -> intExecutes a query, and delete items, matches query
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(int): Number of deleted elements
QueryError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def set_object(field: str, values: list[simple_types]) -> QueryAdds an update query to an object field for an update query
field (string): Field name
values (list[simple_types]): List of values to add
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message if no values are specified
ApiError: Raises with an error message of API return on non-zero error code
def set(field: str, values: list[simple_types]) -> QueryAdds a field update request to the update request
field (string): Field name
values (list[simple_types]): List of values to add
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def drop(index: str) -> QueryDrops a value for a field
index (string): Field name for drop operation
(:obj:`Query`): Query object for further customizations
def expression(field: str, value: str) -> QueryUpdates indexed field by arithmetical expression
field (string): Field name
value (string): New value expression for field
(:obj:`Query`): Query object for further customizations
def update(timeout: timedelta = timedelta(milliseconds=0)) -> QueryResultsExecutes update query, and update fields in items, which matches query
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`QueryResults`): A QueryResults iterator
QueryError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def must_execute(timeout: timedelta = timedelta(
milliseconds=0)) -> QueryResultsExecutes a query, and update fields in items, which matches query, with status check
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:obj:`QueryResults`): A QueryResults iterator
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def get(timeout: timedelta = timedelta(milliseconds=0)) -> (str, bool)Executes a query, and return 1 JSON item
timeout (`datetime.timedelta`): Optional timeout for performing a server-side operation.
Minimum is 1 millisecond; if set to a lower value, it corresponds to disabling the timeout.
A value of 0 disables the timeout (default value)
(:tuple:string,bool): 1st string item and found flag
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def inner_join(query: Query, field: str) -> QueryJoins 2 queries. Items from the 1-st query are filtered by and expanded with the data from the 2-nd query
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`.
Parameter in order for InnerJoin to work: namespace of `query` contains `field` as one of its fields
marked as `joined`
(:obj:`Query`): Query object for further customizations
def join(query: Query, field: str) -> QueryJoin is an alias for LeftJoin. Joins 2 queries.
Items from this query are expanded with the data from the query
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`
(:obj:`Query`): Query object for further customizations
def left_join(join_query: Query, field: str) -> QueryJoins 2 queries.
Items from this query are expanded with the data from the join_query.
One of the conditions below must hold for field parameter in order for LeftJoin to work:
namespace of join_query contains field as one of its fields marked as joined
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`
(:obj:`Query`): Query object for further customizations
def merge(query: Query) -> QueryMerges queries of the same type
query (:obj:`Query`): Query object to merge
(:obj:`Query`): Query object for further customizations
def on(index: str, condition: CondType, join_index: str) -> QueryOn specifies join condition
index (string): Field name from `Query` namespace should be used during join
condition (:enum:`CondType`): Type of condition, specifies how `Query` will be joined with the latest join query issued on `Query` (e.g. `EQ`/`GT`/`SET`/...)
join_index (string): Index-field name from namespace for the latest join query issued on `Query` should be used during join
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message when query is in an invalid state
def select_fields(*fields: str) -> QuerySets list of columns in this namespace to be finally selected. The columns should be specified in the same case as the jsonpaths corresponding to them. Non-existent fields and fields in the wrong case are ignored. If there are no fields in this list that meet these conditions, then the filter works as "*"
fields (*string): List of columns to be selected
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def functions(*functions: str) -> QueryAdds sql-functions to query
functions (*string): Functions declaration
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def equal_position(*equal_position: str) -> QueryAdds equal position fields to arrays queries
equal_poses (*string): Equal position fields to arrays queries
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
class IndexSearchParamBruteForce()Index search param for brute force index. Equal to basic parameters
k (int): Expected size of KNN index results. Should not be less than 1
radius (float): In addition to the parameter `k`, the query results can also be filtered by a `rank` -
value using the parameter, witch called `radius`. It's named so because, under the `L2`-metric,
it restricts vectors from query result to a sphere of the specified radius. [More about `radius`]
(https://github.com/Restream/reindexer/blob/master/float_vector.md)
class IndexSearchParamHnsw()Index search param for HNSW index.
k (int): Expected size of KNN index results. Should not be less than 1
ef (int): Size of nearest neighbor buffer that will be filled during fetching. Should not be less than 'k',
good story when `ef` ~= 1.5 * `k`
radius (float): In addition to the parameter `k`, the query results can also be filtered by a `rank` -
value using the parameter, witch called `radius`. It's named so because, under the `L2`-metric,
it restricts vectors from query result to a sphere of the specified radius. [More about `radius`]
(https://github.com/Restream/reindexer/blob/master/float_vector.md)
class IndexSearchParamIvf()Index search param for IVF index.
k (int): Expected size of KNN index results. Should not be less than 1
nprobe (int): Number of centroids that will be scanned in where. Should not be less than 1
radius (float): In addition to the parameter `k`, the query results can also be filtered by a `rank` -
value using the parameter, witch called `radius`. It's named so because, under the `L2`-metric,
it restricts vectors from query result to a sphere of the specified radius. [More about `radius`]
(https://github.com/Restream/reindexer/blob/master/float_vector.md)
class IndexDefinition(dict)IndexDefinition is a dictionary subclass which allows to construct and manage indexes more efficiently. NOT IMPLEMENTED YET. USE FIELDS DESCRIPTION ONLY.
name (str): An index name.
json_paths (:obj:`list` of :obj:`str`): A name for mapping a value to a json field.
field_type (str): A type of field. Possible values are: `int`, `int64`, `double`, `string`, `bool`,
`composite`, `float_vector`.
index_type (str): An index type. Possible values are: `hash`, `tree`, `text`, `-`, `hnsw`, `vec_bf`, `ivf`.
is_pk (bool): True if a field is a primary key.
is_array (bool): True if an index is an array.
is_dense (bool): True if an index is dense. Reduce the index size. Saves 8 bytes per unique key value for 'hash'
and 'tree' index types. For '-' index type saves 4-8 bytes per each element. Useful for indexes with
high selectivity, but for tree and hash indexes with low selectivity can seriously decrease update
performance.
is_no_column (bool): True if allows to disable column subindex. Reduces the index size.
Allows to save ~(`stored_type_size` * `namespace_items_count`) bytes, where `stored_type_size` is the size
of the type stored in the index, and `namespace_items_count` is the number of items in the namespace.
May reduce performance.
is_sparse (bool): True if a value of an index may be not presented.
collate_mode (str): Sets an order of values by collate mode. Possible values are:
`none`, `ascii`, `utf8`, `numeric`, `custom`.
sort_order_letters (str): Order for a sort sequence for a custom collate mode.
config (dict): A config for a fulltext and float_vector engine.
[More about `fulltext`](https://github.com/Restream/reindexer/blob/master/fulltext.md) or
[More about `float_vector`](https://github.com/Restream/reindexer/blob/master/float_vector.md).