Skip to main content
Version: 0.5.2

Node configuration

This page documents the Quickwit configuration properties. It is divided into three parts:

  • Common properties.
  • Indexer properties: defined in [indexer] section of the configuration file.
  • Searcher properties: defined in [searcher] section of the configuration file.

A commented example is accessible here: quickwit.yaml.

Common configuration

PropertyDescriptionEnv variableDefault value
versionConfig file version. 0.4 is the only available value.
cluster_idUnique Id for the cluster this node will be joining. Should be set to a unique name to ensure clusters do not accidentally merge together.QW_CLUSTER_IDquickwit-default-cluster
node_idNode ID of the instance (searcher or indexer). It must be unique in your cluster. If not set, a random ID is generated at each boot.QW_NODE_ID
enabled_servicesEnabled services (indexer, janitor, metastore, searcher)QW_ENABLED_SERVICESall services enabled
listen_addressThe IP address or hostname that Quickwit service binds to for starting REST and GRPC server and connecting this node to other nodes. By default, Quickwit binds itself to 127.0.0.1 (localhost). This default is not valid when trying to form a cluster.QW_LISTEN_ADDRESS127.0.0.1
advertise_addressIP address advertised by the node, i.e. the IP address that peer nodes should use to connect to the node for RPCs.QW_ADVERTISE_ADDRESSlisten_address
rest_listen_portThe port which to listen for HTTP REST API.QW_REST_LISTEN_PORT7280
gossip_listen_addrThe port which to listen for the Gossip cluster membership service (UDP).QW_GOSSIP_LISTEN_PORTrest_listen_port
grpc_listen_portThe port which to listen for the gRPC service.QW_GRPC_LISTEN_PORTrest_listen_port + 1
peer_seedsList of IP addresses used by gossip for bootstrapping new nodes joining a cluster. This list may contain the current node address, and it does not need to be exhaustive on every node.QW_PEER_SEEDS
data_dir_pathPath to directory where data (tmp data, splits kept for caching purpose) is persisted. This is mostly used in indexing.QW_DATA_DIR./qwdata
metastore_uriMetastore URI. Can be a local directory or s3://my-bucket/indexes or postgres://username:password@localhost:5432/metastore. Learn more about the metastore configuration.QW_METASTORE_URI{data_dir}/indexes
default_index_root_uriDefault index root URI that defines the location where index data (splits) is stored. The index URI is built following the scheme: {default_index_root_uri}/{index-id}QW_DEFAULT_INDEX_ROOT_URI{data_dir}/indexes

There are also other parameters that can be only defined by env variables:

Env variableDescription
QW_S3_ENDPOINTCustom S3 endpoint.
QW_ENABLE_JAEGER_EXPORTEREnable trace export to Jaeger.
QW_AZURE_ACCESS_KEYAzure Blob storage access key.

More details about storage configuration.

Indexer configuration

This section contains the configuration options for an indexer. The split store is documented in the indexing document.

PropertyDescriptionDefault value
split_store_max_num_bytesMaximum size in bytes allowed in the split store for each index-source pair.100G
split_store_max_num_splitsMaximum number of files allowed in the split store for each index-source pair.1000
max_concurrent_split_uploadsMaximum number of concurrent split uploads allowed on the node.12
enable_otlp_endpointIf true, enables the OpenTelemetry exporter endpoint to ingest logs and traces via the OpenTelemetry Protocol (OTLP).false

Ingest API configuration

PropertyDescriptionDefault value
max_queue_memory_usageMaximum size in bytes of the in-memory Ingest queue.2GiB
max_queue_disk_usageMaximum disk-space in bytes taken by the Ingest queue. This is typically higher than the max in-memory queue.4GiB

Searcher configuration

This section contains the configuration options for a Searcher.

PropertyDescriptionDefault value
fast_field_cache_capacityFast field cache capacity on a Searcher. If your filter by dates, run aggregations, range queries, or if you use the search stream API, or even for tracing, it might worth increasing this parameter. The metrics starting by quickwit_cache_fastfields_cache can help you make an informed choice when setting this value.1G
split_footer_cache_capacitySplit footer cache (it is essentially the hotcache) capacity on a Searcher.500M
max_num_concurrent_split_searchesMaximum number of concurrent split search requests running on a Searcher.100
max_num_concurrent_split_streamsMaximum number of concurrent split stream requests running on a Searcher.100

Jaeger configuration

PropertyDescriptionDefault value
enable_endpointIf true, enables the gRPC endpoint that allows the Jaeger Query Service to connect and retrieve traces.false

Using environment variables in the configuration

You can use environment variable references in the config file to set values that need to be configurable during deployment. To do this, use:

${VAR_NAME}

Where VAR_NAME is the name of the environment variable.

Each variable reference is replaced at startup by the value of the environment variable. The replacement is case-sensitive and occurs before the configuration file is parsed. References to undefined variables throw an error unless you specify a default value or custom error text.

To specify a default value, use:

${VAR_NAME:-default_value}

Where default_value is the value to use if the environment variable is not set.

<config_field>: ${VAR_NAME}
or
<config_field>: ${VAR_NAME:-default value}

For example:

export QW_LISTEN_ADDRESS=0.0.0.0
# config.yaml
version: 0.5
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: ${QW_LISTEN_ADDRESS}
rest_listen_port: ${QW_LISTEN_PORT:-1111}

Will be interpreted by Quickwit as:

version: 0.5
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: 0.0.0.0
rest_listen_port: 1111