Docker安装Quickwit搜索引擎

devtools/2025/2/22 19:49:35/

介绍

Quickwit 是首个以亚秒级延迟直接在云存储上执行复杂搜索和分析查询的引擎。它由 Rust 及其分离的计算和存储架构提供支持,旨在节省资源、易于操作并可扩展到 PB 级数据。

Quickwit 非常适合日志管理、分布式跟踪以及通常不可变的数据(例如对话数据(电子邮件、文本、消息平台)和基于事件的分析)。

主要特征
  • 全文搜索和聚合查询
  • 兼容支持Elasticsearch查询语言
  • 云存储上的亚秒级搜索(Amazon S3、Azure Blob Storage 等)
  • 分离计算和存储,无状态索引器和搜索器
  • 无模式或严格模式索引
  • 无模式分析
  • 可做为Grafana数据源
  • 可做为Jaeger后端数据存储
  • OTEL 原生日志和跟踪
  • 支持Kubernetes部署
  • 提供REST风格的API
企业级
  • 支持多种数据来源Kafka/Kinesis/Pulsar 原生
  • 多租户:使用多个索引和分区进行索引
  • 可配的数据保留策略
  • 删除任务(针对 GRPR 用例)
  • 分布式、高可用性*引擎,可在几秒钟内扩展(仅使用 Kafka 进行 HA 索引)
易于部署架构
  • 分离计算和存储
  • 单/多节点、本地或云端
  • 无状态搜索器和索引器
  • REST API
适用场景
Quickwit 非常适合日志管理、分布式跟踪以及通常不可变的数据,例如对话数据(电子邮件、文本、消息平台)、基于事件的分析、审计日志、安全日志等
  • 日志管理
  • 分布式跟踪
  • 向OLAP 数据库(例如 ClickHouse)添加全文搜索功能。
详情参见官方文档: Quickstart | Quickwit

Docker安装

本示例以单机模式部署quickwit引擎独立docker服务,默认docker run命令运行方式;

# 此/opt/docker/sysdata为本地已建专门管理docker容器数据的映射目录,可自行另创建
docker run --rm -v /opt/docker/sysdata/quickwit_data:/quickwit/qwdata -p 7280:7280 quickwit/quickwit:latest run

通过Portainer安装Quickwit极其简单方便,在Images界面中拉取docker镜像文件:quickwit/quickwit:latest

如需了解Portainer,请参考《Docker可视化管理工具Portainer》

在Portainer下载Image成功后,在Containers中创建docker运行容器应用

在CMD命令中添加 run 参数

在Volumes卷中添加Docker服务器p宿主机与Docker运行容器之间的文件目录映射,默认quickwit在dcoker容器环境下会将数据置于/quickwit/qwdata目录,用于做数据管理与维护;

创建docker容器应用服务后,启动docker容器,查看容器中服务运行日志是否正常;

通过http://0.0.0.0:7280/ui/search访问UI管理界面,即Quickwit服务docker容器成功部署并运行;

创建Quickwit索引

在Docker服务器宿主机的卷目录里创建conf目录用于配置索引

mkdir -p conf

在conf目录中下载官方示例yaml索引配置

wget -o hdfs_logs_index_config.yaml https://raw.githubusercontent.com/quickwit-oss/quickwit/main/config/tutorials/hdfs-logs/index-config.yaml

或手动创建hdfs_logs_index_config.yaml,贴入如下索引配置:

version: 0.8index_id: hdfs-logsdoc_mapping:field_mappings:- name: timestamptype: datetimeinput_formats:- unix_timestampoutput_format: unix_timestamp_secsfast_precision: secondsfast: true- name: tenant_idtype: u64- name: severity_texttype: texttokenizer: raw- name: bodytype: texttokenizer: defaultrecord: position- name: resourcetype: jsontokenizer: rawtag_fields: [tenant_id]timestamp_field: timestampsearch_settings:default_search_fields: [severity_text, body]

通过docker exec -it containers_id进入到docker容器系统内,或通过Portainer》Containers界面进入到对应的容器命令行操作;

进入到conf目录中,执行创建index索引的命令

quickwit index create --index-config hdfs_logs_index_config.yaml

执行日志

root@1715ce634888:/quickwit/qwdata/conf# quickwit index create --index-config hdfs_logs_index_config.yaml
❯ Creating index...
✔ Index successfully created.

进入Quickwit管理UI的Indexes中正常显示ID为hdf-logs索引名称,即创建新的索引成功;

数据测试

将下载的quickwit官方提供的小批量10000条测试json数据,上传到quickwit引擎docker容器卷/quickwit/qwdata目录中(直接在docker服务主机下载或本地下载后,上传到的quickwit所在容器卷映射的物理文件夹下)

wget https://quickwit-datasets-public.s3.amazonaws.com/hdfs-logs-multitenants-10000.json 

测试JSON数据格式如下:

...
{"timestamp":1440670498,"severity_text":"INFO","body":"PacketResponder: BP-108841162-10.10.34.11-1440074360971:blk_1073836234_95410, type=HAS_DOWNSTREAM_IN_PIPELINE terminating","resource":{"service":"datanode/27"},"attributes":{"class":"org.apache.hadoop.hdfs.server.datanode.DataNode"},"tenant_id":74}
{"timestamp":1440670499,"severity_text":"INFO","body":"Receiving BP-108841162-10.10.34.11-1440074360971:blk_1073836242_95418 src: /10.10.34.32:51233 dest: /10.10.34.37:50010","resource":{"service":"datanode/27"},"attributes":{"class":"org.apache.hadoop.hdfs.server.datanode.DataNode"},"tenant_id":48}

继续在Portainer的命令行窗口中通过curl方式通过http协义将测试数据json文件,提交到quickwit引擎指定索引hdfs-logs中,当然也可以通过Docker服务主机映射端口将json数据转发到docker容器quickwit引擎中;

root@1715ce634888:/quickwit/qwdata# ls
conf  delete_task_service  hdfs-logs-multitenants-10000.json  indexer-split-cache  indexes  indexing  queues  wal
root@1715ce634888:/quickwit/qwdata# curl -XPOST http://localhost:7280/api/v1/hdfs-logs/ingest -H "content-type: application/json" --data-binary @hdfs-logs-multitenants-10000.json
{"num_docs_for_processing": 10000
}

进入Quickwit管理UI的Query editor中,选择Index ID:hdfs-logs索引,输入 * 查询出所有记录;

如需删除索引,则在docker exec -it containers_id命令中进入到docker容器系统内,执行如下quickwit删除索引脚本

quickwit index delete --index hdfs-logs

或通过API接口触发quickwit服务删除索引

curl -XDELETE http://127.0.0.1:7280/api/v1/indexes/hdfs-logs

更多Quckwit搜索引擎使用,请参考官方教程文档:

Quickstart | Quickwit


http://www.ppmy.cn/devtools/161012.html

相关文章

本地部署DeepSeek的硬件配置建议

本地部署DeepSeek的硬件配置需求因模型参数规模和部署工具不同而有所差异,以下是综合多个来源的详细要求: 1. 基础配置(适用于7B参数模型) 内存:最低8GB,推荐16GB及以上;若使用Ollama工具&…

Datawhale Ollama教程笔记5

Dify 接入 Ollama 部署的本地模型 Dify 支持接入 Ollama 部署的大型语言模型推理和 embedding 能力。 快速接入 下载 Ollama 访问 Ollama 安装与配置,查看 Ollama 本地部署教程。 运行 Ollama 并与 Llama 聊天 ollama run llama3.1Copy to clipboardErrorCopied …

安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法

硬件:雷神MIX G139H047LD 工控机 系统:ubuntu20.04 之前运行某项目时,处于正常状态。后来由于要使用海康威视工业相机(型号:MV-CA013-21UC),便下载了并安装了该相机的SDK,之后运行…

go WEB框架

推荐选型 https://chat.deepseek.com/a/chat/s/e6061607-8f33-4768-a5f0-8970cb1ffefd echo github:https://github.com/labstack/echo wiki:https://echo.labstack.com/docs/quick-start block:https://blog.csdn.net/qq_38105536/artic…

HTML Canvas clip 深入全面讲解

在HTML5的<canvas>元素中&#xff0c;裁剪路径&#xff08;clipping path&#xff09;是一个非常强大的功能&#xff0c;它允许你定义一个区域&#xff0c;在该区域内进行绘制&#xff0c;而区域外的内容将不会被显示。通过合理使用裁剪路径&#xff0c;可以实现复杂的图…

EasyRTC低延迟通信与智能处理:论嵌入式WebRTC与AI大模型的技术融合

在当今数字化时代&#xff0c;实时通信的需求日益增长&#xff0c;视频通话作为一种高效、直观的沟通方式&#xff0c;广泛应用于各个领域。WebRTC技术的出现&#xff0c;为实现浏览器之间的实时音视频通信提供了便捷的解决方案。而基于WebRTC技术的EasyRTC视频通话SDK&#xf…

数据结构——哈希表

一、哈希表 1.1 哈希表的概念 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记录&#xff0c;以加快查找的速度。这个映射函…

认识HTML的标签结构

一、HTML的基本概念 1.什么是HTML&#xff1f; ①HTML是描述网页的一种标记语言&#xff0c;也被称为超文本标记语言【并不是一种编程语言】 ②HTML包含了HTML标签和文本内容 ③HTML文档也称为web页面 2.HTML的标签 HTML的标签通常成对出现&#xff0c;HTML文档由标签和受…