Quickwit needs a place to store meta-information about its indexes.
- The index configuration.
- Meta-information about its splits. For instance, their IDs, the number of documents they contain, their sizes, their min/max timestamp, and the set of tags present in the split.
- The different sources checkpoints.
- Some extra information such as the index creation time.
The metastore is entirely defined by a single URI. One can set it by editing the
metastore_uri parameter of the node configuration file (often named
Currently, Quickwit offers two implementations:
- PostgreSQL: recommended for distributed usage.
- File-backed implementation.
We recommend the PostgreSQL metastore for any distributed usage.
The PostgreSQL metastore can be configured by setting a PostgreSQL URI in the
metastore_uri parameter of the Quickwit configuration file. The URI takes the following format:
Some of those parameters can be omitted. The following PostgreSQL URIs are for instance valid:
The database has to be created in advance.
On its first execution, Quickwit will transparently create the necessary tables.
Likewise, if you upgrade Quickwit to a version that includes some changes in the PostgreSQL schema, Quickwit will transparently operate the migration startup.
For convenience, Quickwit also makes it possible to store its metadata in files using a file-backed metastore. In that case, Quickwit will write one file per index.
The metastore is then configured by passing a storage URI that will serve as the root of the metastore storage.
The metadata file associated with a given index will then be stored under
For the moment, Quickwit supports two types of storage types:
- a local file system URI (e.g.,
file:///opt/toto). It is also valid to pass a file path directly (without file://).
/var/quickwit. Relative paths will be resolved with respect to the current working directory.
- S3-compatible storage URI (e.g.,
s3://my-bucket/some-path). See the storage config documentation to configure S3 or S3-compatible storage providers.
By default, the File-Backed Metastore is only read once when you start a Quickwit process (searcher, indexer, ...).
You can also configure it to poll the File-Backed Metastore periodically to keep a fresh view of it. This is useful for a Searcher instance that needs to be aware of new splits published by an Indexer running in parallel.
To configure the polling interval (in seconds only), add a URI fragment to the storage URI like this:
Amazon S3 charges $0.0004 per 1000 GET requests. Polling a metastore every 30 seconds costs $0.04 per month and index.
The following file-backed metastore URIs for instance are valid:
The file-backed metastore does not support multiple instances running at the same time because it does not implement any locking mechanism to prevent concurrent writes from overwriting each other. Ensure that only one file-backed metastore instance is running at all times.