Skip to content

Commit 7daee64

Browse files
Merge branch 'main' into log-actor-exit-phase
2 parents eb1a781 + 4d0ffc3 commit 7daee64

File tree

238 files changed

+5006
-3739
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+5006
-3739
lines changed

.github/workflows/publish_docker_images.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ jobs:
102102
environment: production
103103
steps:
104104
- name: Download digests
105-
uses: actions/download-artifact@v4.2.1
105+
uses: actions/download-artifact@v4.3.0
106106
with:
107107
pattern: digest-*
108108
path: /tmp/digests

LICENSE-3rdparty.csv

Lines changed: 79 additions & 22 deletions
Large diffs are not rendered by default.

docs/configuration/index-config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ fast:
141141

142142
| Tokenizer | Description |
143143
| ------------- | ------------- |
144-
| `raw` | Does not process nor tokenize text. Filters out tokens larger than 255 bytes. |
144+
| `raw` | Does not process nor tokenize text. Filters out tokens larger than 255 bytes. This is similar to the `keyword` type in Elasticsearch. |
145145
| `raw_lowercase` | Does not tokenize text, but lowercase it. Filters out tokens larger than 255 bytes. |
146146
| `default` | Chops the text on according to whitespace and punctuation, removes tokens that are too long, and converts to lowercase. Filters out tokens larger than 255 bytes. |
147147
| `en_stem` | Like `default`, but also applies stemming on the resulting tokens. Filters out tokens larger than 255 bytes. |

docs/configuration/node-config.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ indexer:
178178
| `max_queue_memory_usage` | Maximum size in bytes of the in-memory Ingest queue. | `2GiB` |
179179
| `max_queue_disk_usage` | Maximum disk-space in bytes taken by the Ingest queue. The minimum size is at least `256M` and be at least `max_queue_memory_usage`. | `4GiB` |
180180
| `content_length_limit` | Maximum payload size uncompressed. Increasing this is discouraged, use a [file source](../ingest-data/sqs-files.md) instead. | `10MiB` |
181+
| `grpc_compression_algorithm` | Compression algorithm (`gzip` or `zstd`) to use for gRPC traffic between nodes for the ingest service | `None` |
181182

182183
Example:
183184

@@ -186,6 +187,7 @@ ingest_api:
186187
max_queue_memory_usage: 2GiB
187188
max_queue_disk_usage: 4GiB
188189
content_length_limit: 10MiB
190+
grpc_compression_algorithm: zstd
189191
```
190192

191193
## Searcher configuration

docs/configuration/storage-config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ The Google Cloud Storage flavor (`gcs`) turns off multi-object delete requests a
9090

9191
*MinIO flavor*
9292

93-
The MinIO flavor (`minio`) forces path-style access.
93+
The MinIO flavor (`minio`) overrides the `region` parameter to `minio` and forces path-style access.
9494

9595
Example of a storage configuration for Google Cloud Storage in YAML format:
9696

docs/operating/upgrades.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Version 0.7 upgrade
2+
title: Version upgrade
33
sidebar_position: 4
44
---
55

@@ -23,4 +23,22 @@ No migration is done if `otel-traces-v0_7` already exists. If you want `service_
2323

2424
Quickwit 0.9 introduces a new ingestion service to to power the ingest and bulk APIs (v2). The new ingest is enabled and used by default, even though the legacy one (v1) remains enabled to finish indexing residual data in the legacy write ahead logs. Note that `ingest_api.max_queue_disk_usage` is enforced on both ingest versions separately, which means that the cumulated disk usage might be up to twice this limit.
2525

26-
The control plane should be upgraded first in order to enable the new ingest source (v2) on all existing indexes. Ingested data into previously existing indexes on upgraded indexer nodes will not be picked by the indexing pipelines until the control plane is upgraded. Because the indexing plan is computed differently in 0.9, all pipelines will be restarted when upgrading the control plane. If possible, we recommend avoiding rolling upgrades for indexers. Instead, scale down the number of indexers to zero first, then upgrade the control plane and finally scale the upgraded indexers back up.
26+
When upgrading to 0.9, we recommend to perform a full cluster restart.
27+
28+
<!--
29+
Reasons:
30+
- Ingested data into previously existing indexes on upgraded indexer nodes will not be picked by the indexing pipelines until the control plane is upgraded.
31+
- The indexing plan is computed differently in 0.9, all pipelines will be restarted when upgrading the control plane.
32+
- If you intend to enable compression for the ingest service (`ingest_api.grpc_compression_algorithm`), you must do so in two steps: first, upgrade the indexer nodes with compression disabled, then update the node configuration to enable compression, and finally restart the indexer nodes.
33+
- Obscure bug raised in https://github.com/quickwit-oss/quickwit/issues/5787#issuecomment-2979470315
34+
-->
35+
36+
Shutdown order:
37+
1) indexers, searchers and janitor
38+
2) control plane
39+
3) metastores
40+
41+
Start up order:
42+
1) metastores
43+
2) control plane
44+
3) indexers, searchers and janitor

docs/reference/cli.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ quickwit index update
199199
|-----------------|-------------|
200200
| `--index` | ID of the target index |
201201
| `--index-config` | Location of the index config file. |
202+
| `--create` | Create the index if it doesn't exist. |
202203
### index clear
203204

204205
Clears an index: deletes all splits and resets checkpoint.
@@ -514,6 +515,7 @@ quickwit source update
514515
| `--index` | ID of the target index |
515516
| `--source` | ID of the source |
516517
| `--source-config` | Path to source config file. Please, refer to the documentation for more details. |
518+
| `--create` | Create the source if it doesn't exist. |
517519
### source enable
518520

519521
Enables a source for an index.

docs/reference/es_compatible_api.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,12 @@ Moreover, while Quickwit does not support `best_fields` or `cross_fields`, it wi
672672

673673
[Elasticsearch reference documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.8/query-dsl-term-query.html)
674674

675+
:::note
676+
677+
When working on text, it is recommended to only use `term` queries on fields configured with `tokenizer: raw`. This is the Quickwit equivalent of the Elasticsearch `keyword` type.
678+
679+
:::
680+
675681
#### Example
676682

677683
```json

docs/reference/rest-api.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,19 @@ The response is the index metadata of the created index, and the content type is
327327
PUT api/v1/indexes/<index id>
328328
```
329329

330-
Updates the configurations of an index. This endpoint follows PUT semantics, which means that all the fields of the current configuration are replaced by the values specified in this request or the associated defaults. In particular, if the field is optional (e.g. `retention_policy`), omitting it will delete the associated configuration. If the new configuration file contains updates that cannot be applied, the request fails, and none of the updates are applied. The API accepts JSON with `content-type: application/json` and YAML with `content-type: application/yaml`.
330+
#### Path variable
331+
332+
| Variable | Description |
333+
| ------------- | ------------- |
334+
| `index id` | The index id |
335+
336+
#### Query parameters
337+
338+
| Variable | Type | Description | Default value |
339+
|-----------|--------|-----------------------------------------------|---------------|
340+
| `create` | `bool` | Create the index if it doesn't already exists | `false` |
341+
342+
Update the configurations of an index. This endpoint follows PUT semantics, which means that all the fields of the current configuration are replaced by the values specified in this request or the associated defaults. In particular, if the field is optional (e.g. `retention_policy`), omitting it will delete the associated configuration. If the new configuration file contains updates that cannot be applied, the request fails, and none of the updates are applied. The API accepts JSON with `content-type: application/json` and YAML with `content-type: application/yaml`.
331343

332344
- The retention policy update is automatically picked up by the janitor service on its next state refresh.
333345
- The search settings update is automatically picked up by searcher nodes when the next query is executed.
@@ -645,6 +657,19 @@ The response is the created source config, and the content type is `application/
645657
PUT api/v1/indexes/<index id>/sources/<source id>
646658
```
647659

660+
#### Path variable
661+
662+
| Variable | Description |
663+
| ------------- | ------------- |
664+
| `index id` | The index id |
665+
| `source id` | The source id |
666+
667+
#### Query parameters
668+
669+
| Variable | Type | Description | Default value |
670+
|-----------|--------|-----------------------------------------------|---------------|
671+
| `create` | `bool` | Create the index if it doesn't already exists | `false` |
672+
648673
Update a source by posting a source config JSON payload.
649674

650675
#### PUT payload

docs/reference/updating-mapper.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Conversion from a type to itself is omitted. Conversions that never succeed and
4444
| date | text | convert to rfc3339 textual representation |
4545
| ip | text | convert to IPv6 representation. For IPv4, convert to IPv4-mapped IPv6 address (`::ffff:1.2.3.4`) |
4646
| bool | text | convert to "true" or false" |
47-
| u64/i64/f64 | bool | convert 0/0.0 to false and 1/1.0 to true, otherise omit |
47+
| u64/i64/f64 | bool | convert 0/0.0 to false and 1/1.0 to true, otherwise omit |
4848
| text | bool | convert if "true" or "false" (lowercase), otherwise omit |
4949
| text | ip | convert if valid IPv4 or IPv6, otherwise omit |
5050
| text | f64 | convert if valid floating point number, otherwise omit |

0 commit comments

Comments
 (0)