Zinc 的概念与存储

Posted sp42a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zinc 的概念与存储相关的知识,希望对你有一定的参考价值。

翻译自官方文档:

  • 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" 

设置如下环境变量:

以上是关于Zinc 的概念与存储的主要内容,如果未能解决你的问题,请参考以下文章

Zinc 的概念与存储

Zinc

Gradle + Scala Plugin + Zinc 1.3.5 将 Protobuf 3.7 泄漏到编译器类路径

搜索引擎漫谈以及 Zinc 简介

搜索引擎漫谈以及 Zinc 简介

搜索引擎漫谈以及 Zinc 简介