zincsearch README

The project's README from github.com/zincsearch/zincsearch. As one markdown file: README.md.

CI Nightly Release Go Report Card Docs codecov

❗Note: If your use case is of log search (app and security logs) instead of app search (implement search feature in your application or website) then you should check openobserve/openobserve project built in rust that is specifically built for log search use case.

ZincSearch

ZincSearch is a search engine that does full text indexing. It is a lightweight alternative to Elasticsearch and runs using a fraction of the resources. It uses bluge as the underlying indexing library.

It is very simple and easy to operate as opposed to Elasticsearch which requires a couple dozen knobs to understand and tune which you can get up and running in 2 minutes

It is a drop-in replacement for Elasticsearch if you are just ingesting data using APIs and searching using kibana (Kibana is not supported with ZincSearch. ZincSearch provides its own UI).

Check the below video for a quick demo of ZincSearch.

Zinc Youtube

Why ZincSearch

While Elasticsearch is a very good product, it is complex and requires lots of resources and is more than a decade old. I built ZincSearch so it becomes easier for folks to use full text search indexing without doing a lot of work.

Features:

go + fiber + react

  1. Provides full text indexing capability
  2. Single binary for installation and running. Binaries available under releases for multiple platforms.
  3. Web UI for querying data written in Vue
  4. Compatibility with Elasticsearch APIs for ingestion of data (single record and bulk API)
  5. Out of the box authentication
  6. Schema less - No need to define schema upfront and different documents in the same index can have different fields.
  7. Index storage in disk
  8. aggregation support

Documentation

Documentation is available at https://zincsearch-docs.zinc.dev/

Screenshots

Search screen

Search screen

User management screen

Users screen

Getting started

Quickstart

Check Quickstart

Releases

ZincSearch has hundreds of production installations.

Build

Note — Nightly / dev-image (push) fails on forks:

Error: buildx failed with: ERROR: failed to build: failed to solve: failed to push ghcr.io/zincsearch/zincsearch-dev:0.4.11-8792c59-dev: denied: permission_denied: The requested installation does not exist.

The workflow logs in to GHCR with the repository's GITHUB_TOKEN, which can only push packages under the owner of the repository running the workflow. On a fork the token has no access to the zincsearch org, so the push is denied. Either run the workflow from zincsearch/zincsearch, or change env.IMAGE in nightly.yml to ghcr.io/<your-owner>/zincsearch-dev (and make sure the package is linked to the repo / the repo has packages: write).

ZincSearch Vs OpenObserve

Feature ZincSearch OpenObserve
Ideal use case App search Logs, metrics, traces (Immutable Data)
Storage Disk Disk, Object (S3), GCS, MinIO, swift and more.
Preferred Use case App search Observability (Logs, metrics, traces)
Max data supported 100s of GBs Petabyte scale
High availability Not available Yes
Open source Yes Yes, OpenObserve
ES API compatibility Yes Yes
GUI Basic Very Advanced, including dashboards
Cost Open source Open source
Get started Open source docs Open source docs or Cloud

Community

Examples

You can use ZincSearch to index and search any data. Here are some examples that folks have created to index and search enron email dataset using zincsearch:

  1. https://github.com/jorgeloaiza48/Enron-Email-DataSet
  2. https://github.com/jhojanperlaza/email_search_engine
  3. https://github.com/carlosarraes/zinmail
  4. https://github.com/devjopa/golab-search
  5. https://github.com/avaco2312/zincsearch
  6. https://github.com/paolorossig/email-indexer
  7. https://github.com/ulimonte05/zincsearching

zincsearch (zincsearch/zincsearch)

Searching Database…

这是什么?一个做全文索引的搜索引擎,是 Elasticsearch 的轻量替代品,用 Go 编写,基于 bluge 索引库构建。它只需占用 Elasticsearch 一小部分的资源就能运行。
它和直接跑 Elasticsearch 有什么不一样?如果你通过 API 写入数据,它可以无缝替换 Elasticsearch——单条写入和批量写入都兼容 Elasticsearch 的 API。但它不支持 Kibana:你得改用 ZincSearch 自带的网页界面来搜索。
我怎么把它跑起来?从 releases 页面下载一个单独的可执行文件然后运行——作者说两分钟就能跑起来。官方也发布了 Docker 镜像(ghcr.io/zincsearch/zincsearch),文档里还有快速上手指南(Quickstart)。
我需要另外装 Java 或其他服务吗?不需要——没有 JVM,也没有外部数据库。它就是一个 Go 可执行文件,索引直接存在磁盘上,而且身份认证开箱即用。
我能用它来搜索应用的日志吗?这是它明确声明不支持的唯一场景:对于应用和安全日志,README 会让你改用 openobserve/openobserve 这个项目。ZincSearch 面向的是应用搜索——给你的应用或网站加上搜索功能。
它能跑在 Windows 和 macOS 上吗,还是只支持 Linux?不只是 Linux:CI 会在 Linux、macOS 和 Windows 上构建和测试它,releases 页面上也发布了多种平台的预编译可执行文件。
既然已经有 Elasticsearch 了,作者为什么还要做这个?用作者的话说,Elasticsearch 是非常优秀的产品,但很复杂、需要大量资源,而且已经有十多年历史了。做 ZincSearch 就是想让大家不用费太多功夫就能用上全文搜索索引。
我需要像 Elasticsearch 那样提前定义字段映射吗?不需要——ZincSearch 是无模式的(schemaless)。不用事先定义任何 schema,同一个索引里的不同文档甚至可以有不一样的字段。
它能处理多大数据量?支持高可用吗?README 自己的对比表把它定位为适合应用搜索,磁盘数据量最高到几百 GB。它不支持高可用,图形界面也比较简单——PB 级规模、高可用和高级仪表盘是 OpenObserve 提供的功能。
它支持用于分析类查询的聚合(aggregation)吗?支持——聚合支持被列为核心功能之一,和全文索引、开箱即用的身份认证以及兼容 Elasticsearch 的数据写入并列。
Creator
zincsearch
Size
11.9 MB
Stars
17.9K
Age
4y
Commits · 90 Days