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_ID
和AWS_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 的概念与存储的主要内容,如果未能解决你的问题,请参考以下文章