编程 ZincSearch是一个轻量级的全文搜索引擎,能够替代Elasticsearch

2024-11-19 02:05:19 +0800 CST views 1094

ZincSearch 是一个轻量级的全文搜索引擎,能够替代 Elasticsearch,尤其适用于需要高效搜索且资源消耗低的场景。它由 Golang 编写,并使用 bluge 作为底层索引库。其主要特点包括:

  • 全文索引:提供高效的全文检索功能。
  • 单个二进制文件:便于在多平台上安装和运行,且部署简单。
  • 内置 Web UI:使用 Vue 编写的 Web 界面可用于查询数据,无需 Kibana 等外部工具。
  • Elasticsearch API 兼容:与 Elasticsearch 的数据接收 API 兼容,便于数据迁移和集成。
  • 开箱即用的身份验证:内置用户认证机制。
  • 无模式支持:无需提前定义索引模式,同一索引内的文档可以有不同的字段。
  • 磁盘索引存储:支持将索引存储在磁盘上,确保数据的持久性。
  • 聚合支持:支持查询结果的聚合分析。

ZincSearch 的安装十分简单,特别是对于日志类应用非常适合,如应用程序日志和安全日志。它还可以通过 Docker 轻松安装和运行,并提供 REST API 支持,适合开发者通过 API 进行数据检索和操作。

安装和使用 ZincSearch

下面是使用 Windows 安装 ZincSearch 的简单步骤:

  1. Github Releases 下载 ZincSearch 的预编译二进制文件。
  2. 设置管理员用户名和密码:
    set ZINC_FIRST_ADMIN_USER=admin
    set ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123
    
  3. 创建存储数据的文件夹:
    mkdir data
    
  4. 启动 ZincSearch:
    zincsearch.exe
    

启动成功后,ZincSearch 将在 http://localhost:4080 运行,用户可以使用浏览器访问管理界面。

导入样例数据

可以使用 curl 批量导入数据,以下是一个示例:

curl -L https://github.com/zincsearch/zincsearch/releases/download/v0.1.1/olympics.ndjson.gz -o olympics.ndjson.gz
gzip -d olympics.ndjson.gz 
curl http://localhost:4080/api/_bulk -i -u admin:Complexpass#123 --data-binary "@olympics.ndjson"

查询样例数据

可以通过 ZincSearch 内置的 UI 或使用 API 查询数据。以下是一个使用 API 查询数据的示例代码:

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "strings"
)

func main() {
    query := `{
        "search_type": "match",
        "query": {
            "term": "DEMTSCHENKO",
            "start_time": "2021-06-02T14:28:31.894Z",
            "end_time": "2021-12-02T15:28:31.894Z"
        },
        "from": 0,
        "max_results": 20,
        "_source": []
    }`
    req, err := http.NewRequest("POST", "http://localhost:4080/api/games3/_search", strings.NewReader(query))
    if err != nil {
        log.Fatal(err)
    }
    req.SetBasicAuth("admin", "Complexpass#123")
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()
    log.Println(resp.StatusCode)
    body, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(body))
}

通过这个示例代码,你可以使用 ZincSearch API 来进行精确的搜索查询。

结论

ZincSearch 是一个高效且易于部署的搜索引擎,特别适合替代 Elasticsearch,尤其是当你需要一个资源占用少的解决方案时。ZincSearch 提供了强大的 API 支持和内置的 Web UI,使其成为一个功能强大且轻量的选择。

如需更多详情和文档,请访问 ZincSearch 的 Github 仓库

复制全文 生成海报 搜索引擎 数据检索 软件开发

推荐文章

OpenCV 检测与跟踪移动物体
2024-11-18 15:27:01 +0800 CST
Golang 中你应该知道的 Range 知识
2024-11-19 04:01:21 +0800 CST
nginx反向代理
2024-11-18 20:44:14 +0800 CST
HTML5的 input:file上传类型控制
2024-11-19 07:29:28 +0800 CST
php腾讯云发送短信
2024-11-18 13:50:11 +0800 CST
一键压缩图片代码
2024-11-19 00:41:25 +0800 CST
JavaScript 的模板字符串
2024-11-18 22:44:09 +0800 CST
linux设置开机自启动
2024-11-17 05:09:12 +0800 CST
Gin 框架的中间件 代码压缩
2024-11-19 08:23:48 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
go命令行
2024-11-18 18:17:47 +0800 CST
JavaScript设计模式:观察者模式
2024-11-19 05:37:50 +0800 CST
CentOS 镜像源配置
2024-11-18 11:28:06 +0800 CST
Vue3中怎样处理组件引用?
2024-11-18 23:17:15 +0800 CST
12个非常有用的JavaScript技巧
2024-11-19 05:36:14 +0800 CST
js生成器函数
2024-11-18 15:21:08 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
资源文档库
2024-12-07 20:42:49 +0800 CST
赚点点任务系统
2024-11-19 02:17:29 +0800 CST
程序员茄子在线接单