Skip to main content

索引

支持的数据格式

Quickwit 摄取 JSON 记录,并将其称为“文档”或“docs”。每个文档必须是一个 JSON 对象。在摄取文件时,文档之间必须用换行符分隔。

Quickwit 目前还不支持如 AvroCSV 这样的文件格式。压缩格式如 bzip2gzip 也不受支持。

Data model(数据模型)

Quickwit 支持无模式索引和固定模式。索引的“文档映射”(通常也称为“doc 映射”)是一份字段名称和类型的列表,用于声明索引的模式。对于无模式或混合固定模式与无模式索引,请遵循我们的 无模式索引指南。此外,文档映射还指定了文档如何被索引(标记器)和存储(列式 vs. 行式)的方式。

合并过程与合并策略

索引被分割成不可变的分片。分片的大小由其携带的文档数量决定。当分片的大小达到索引配置中定义的阈值 split_num_docs_target 时,该分片被视为“成熟”。

索引器缓冲传入的文档,并在缓冲区的大小达到 split_num_docs_target 或者自第一个文档被排队以来经过了 commit_timeout_secs 秒时生成一个新的分片,具体取决于哪个事件先发生。在这种情况下,索引器会产生不成熟的分片。合并过程是指将不成熟的分片分组并合并在一起以产生成熟分片的迭代过程。

合并策略控制合并算法,该算法主要由两个参数驱动:split_num_docs_targetmerge_factor。每当有新的分片发布时,合并策略都会检查不成熟分片的列表,并尝试将 merge_factor 个分片合并在一起以产生更大的分片。合并策略也可能根据需要决定合并更少或更多的分片。最后,合并算法永远不会合并超过 max_merge_factor 个分片。

Split store(分片存储)

分片存储是一个缓存,它将最近发布的和不成熟的分片保留在磁盘上以加快合并过程。在一个成功的合并阶段之后,分片存储会清除悬空的分片。

分配给分片存储的磁盘空间由配置参数 split_store_max_num_splitssplit_store_max_num_bytes 控制。

Data sources(数据源)

数据源指定可以从外部数据存储(可以是文件、流或数据库)连接和摄取数据的位置和一组参数。通常,Quickwit 简单地将数据源称为“源”。索引引擎支持使用 CLI 进行本地临时文件摄取和流式源(例如 Kafka 源)。Quickwit 可以从一个或多个源将数据插入到索引中。更多详细信息可以在 源配置页面 中找到。

Checkpoint(检查点)

Quickwit 通过检查点实现了恰好一次(exactly-once)处理。对于每个源,“源检查点”记录了目标文件或流中已处理的文档位置。检查点存储在元存储中,并且每次发布新分片时都会原子性地更新。当出现索引错误时,索引过程会从最后一个成功发布的检查点后立即恢复。内部地,源检查点表示为一个对象映射,该映射从绝对路径或分区 ID 到偏移量或序列号。