Zinc 的概念与存储

ZincSearch是一个能对你的个人数据进行全文搜索的工具,类似百度和谷歌,但仅针对你的上传数据。它使用倒排索引实现快速检索,依赖于Bluge库作为底层索引。索引映射定义了字段类型,存储选项包括磁盘、S3和MinIO。在磁盘存储外,需要配置AWS IAM凭证或设置MinIO环境变量来使用云存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译自官方文档:

  • https://docs.zincsearch.com/concepts/
  • https://docs.zincsearch.com/storage/

概念

ZincSearch 能够搜索你自己的数据,类似地,百度或谷歌也是搜索,但只针对你自己的数据,你上传到 ZincSearch 的数据。ZincSearch 对你的文档(json)索引化之后便可以全文搜索了。

例如你插入:

{
    "message":"Prabhat Sharma is a cool guy to hang with."
}

如此类推还有其他文档,输入 Prabhat 即可搜索出来。

ZincSearch 索引

为了快速访问,你输入到 ZincSearch 的数据将被索引化。ZincSearch 采用倒排索引(Inverted Index)的索引方法。

倒排索引

倒排索引是一种数据库索引,存储了内容的映射,包括内容的单词或数字、表中/文档中位置。倒置索引的目的在于快速的全文搜索,但代价是当文档添加到数据库时候要进行相关的处理。

一组文档的倒排索引看起来会是这样的。

{"id":1, "message: "Prabhat Sharma is a cool guy to hang with"}

{"id":2, "message: "Prabhat Sharma is in San Francisco"}

在这里插入图片描述

Bluge 库

ZincSearch 使用 Bluge 库 作为底层的索引库,基于它扩展了许多功能。

索引映射

文档有多个字段,每个字段有一种类型。映射(mapping)决定了某个索引的字段是什么类型。ZincSearch 通过映射把文档适当地索引化。如果一个字段的映射不可用,那么 ZincSearch 就对其进行反射(reflection )获取其类型。

例如,olympics 指数的映射可以是这样的:

{
    "mappings": {
        "properties": {
            "Athlete": {
                "type": "text"
            },
            "City": {
                "type": "keyword"
            },
            "Country": {
                "type": "keyword"
            },
            "Discipline": {
                "type": "text"
            },
            "Event": {
                "type": "text"
            },
            "Gender": {
                "type": "text"
            },
            "Medal": {
                "type": "keyword"
            },
            "Season": {
                "type": "keyword"
            },
            "Sport": {
                "type": "text"
            },
            "Year": {
                "type": "numeric"
            }
        }
    }
}

存储

ZincSearch 要存储这两类数据:

  • 索引
  • 索引的元数据

索引的元数据总是存储在磁盘上。索引可存储在三种不同的地方。

磁盘

磁盘是索引的默认存储位置。请确保你的磁盘上有足够的存储空间用于存储索引。在数据摄取(ingestion )期间,你提供的索引名称可能不存在。在这种情况下,为存储索引数据将自动创建一个新的基于磁盘的索引。

S3

为了存储 S3 的存储数据先要:创建索引,如 POST http://localhost:4080/api/index

请求体:

{ 
    "name": "myshinynewindex", 
    "storage_type": "s3" 
}

通过任何支持的机制使 AWS IAM 凭证对 ZincSearch 可用。ZincSearch 使用 AWS Go SDK,它通过以下方式寻找凭证。

  • 环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY(出于安全考虑,不推荐使用)。
  • 存储在 ~/.aws/credentials的 aws CLI 凭证
  • EC2 Instance/Fargate 容器 /ECS 容器上的 Instance 元数据。这样做是为了给 EC2 实例提供一个 IAM 角色,或给 ECS 任务提供一个任务角色 - IMDS/IMDSv2 。不推荐 ECS,因为它目前还不支持 EBS 上的有状态工作负载。
  • EKS 中服务账户的 IAM 角色

MinIO

为了存储 MinIO 的存储数据先要:创建索引,如 POST http://localhost:4080/api/index

请求体:

{ 
    "name": "myshinynewindex", 
    "storage_type": "minio" 
}

设置如下环境变量:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值