📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

前言 #

在国产化替代与数据安全备受重视的今天,Easysearch 作为一款由极限科技团队研发的分布式搜索型数据库,凭借其对 Elasticsearch API 的高度兼容性、原生集成向量检索以及卓越的硬件利用率,成为了许多企业私有化部署的首选。

对于研发和运维人员来说,如何快速搭建一套稳定运行的测试或生产环境是第一步。本文将基于官方最佳实践,教你如何在 30 分钟内利用 Docker 快速部署 Easysearch,并完成基础功能的验证。


一、 环境准备 #

在开始安装之前,请确保你的服务器或个人电脑满足以下基本条件,本文以 linux 系统为例而编写。

1. 软件要求 #

  • Docker: 推荐版本 20.10.0 及以上。
  • Docker Compose: 推荐版本 v2.0 及以上(用于简化多容器管理)。
  • 操作系统: Linux(推荐)、macOS 或 Windows (Docker Desktop)。

2. 系统参数优化 #

Easysearch 底层需要较高的内存映射能力。在 Linux 环境下,你需要调整 vm.max_map_count 参数,否则容器可能无法启动。

执行以下命令立即生效:

sudo sysctl -w vm.max_map_count=262144

注:vm.max_map_count 是 Linux 内核的一个参数,它限制了一个进程可以拥有的最大内存映射区域数。搜索引擎需要频繁操作大文件,调高此值能保证运行稳定。


二、 安装步骤 #

为了方便管理数据和配置,我们推荐使用 Docker Compose 进行部署。

1. 创建工作目录 #

首先,在你的系统中创建一个专门存放 Easysearch 文件的目录:

# 创建 easysearch-demo 目录并进入
mkdir easysearch-demo && cd easysearch-demo
# 创建 data 目录用于挂载 easysearch 数据目录,并修改为 easysearch 运行用户权限
mkdir data && chown -R 602:602 data

2. 编写部署配置文件 #

在该目录下创建一个名为 docker-compose.yml 的文件,并将以下内容复制进去:

services:
  easysearch:
    image: infinilabs/easysearch:latest
    container_name: easysearch
    environment:
      - cluster.name=easysearch-cluster
      - node.name=node-1
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置内存大小
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data:/usr/share/easysearch/data
    ports:
      - 9200:9200
      - 9300:9300
    restart: always

配置简析:

  • discovery.type=single-node:设置该节点为单机模式,适合快速测试。
  • ES_JAVA_OPTS:控制 Easysearch 占用的内存。虽然它很轻量,但建议至少给 512MB。
  • 9200 端口:这是我们进行数据查询和管理的 HTTP 接口。

3. 启动容器 #

在当前目录下执行以下命令:

docker compose up -d

Docker 会自动从官方镜像库下载 Easysearch 镜像并启动。-d 参数表示在后台运行。

4. 查看密码 #

使用如下密码查看 easysearch 的密码

docker logs -f easysearch-demo

输入命令后,会看到如下类似内容


三、 安装成功校验 #

容器启动后,我们需要确认 Easysearch 是否正在正常工作。

1. 检查容器运行状态 #

执行以下命令确认容器是否处于 Up 状态:

docker ps | grep easysearch

2. 访问 API 接口 #

Easysearch 默认提供了 REST API。你可以使用浏览器或 curl 命令访问服务器的 9200 端口。

命令示例:

curl -ku admin:ea4261583a74b036fc45 -XGET https://localhost:9200

预期结果:
如果安装成功,你会看到一段 JSON 格式的回执,里面包含版本号、集群名称等信息,类似于:

{
  "name": "node-1",
  "cluster_name": "easysearch-cluster",
  "cluster_uuid": "dP5MM41qRk6IngbVzUttmw",
  "version": {
    "distribution": "easysearch",
    "number": "1.8.3",
    "distributor": "INFINI Labs",
    "build_hash": "367c899e9d1b90243aa06b0ee22eb1ab577b46b4",
    "build_date": "2024-09-28T07:26:28.539100Z",
    "build_snapshot": false,
    "lucene_version": "8.11.2",
    "minimum_wire_lucene_version": "7.7.0",
    "minimum_lucene_index_compatibility_version": "7.7.0"
  },
  "tagline": "You Know, For Easy Search!"
}

3. 检查集群健康度 #

执行如下命令:

curl -ku  admin:ea4261583a74b036fc45 -XGET https://localhost:9200/_cluster/health?pretty
  • 如果看到 “status”: “green”,说明集群一切正常。
  • 如果看到 “status”: “yellow”,通常是因为单机模式下没有副本节点,这在测试环境下是正常的。

四、 进阶:数据的写入与搜索测试 #

为了验证 Easysearch 的实际搜索能力,我们可以尝试写入一条文档并搜索它。

1. 写入一条数据 #

curl -ku admin:ea4261583a74b036fc45 -XPOST "https://localhost:9200/my-index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "国产搜索引擎选型",
  "content": "Easysearch 是一个高性能的分布式搜索数据库",
  "tags": ["国产", "搜索", "高性能"]
}'

2. 搜索数据 #

curl -ku admin:ea4261583a74b036fc45 -XGET "https://localhost:9200/my-index/_search"

如果你能看到刚才插入的内容,说明 Easysearch 的索引与检索流程已经完全跑通。


五、 总结 #

通过 Docker 部署 Easysearch 极其高效,仅需几个简单的步骤就能搭建出一套支持全文检索和向量搜索的高性能环境。

本次安装重点回顾:

  • 系统设置: 必须调整 vm.max_map_count。
  • 镜像选择: 使用 infinilabs/easysearch 官方镜像。
  • 权限修正: 挂载 data 目录前,务必执行 chown -R 602:602。

Easysearch 官方建议在正式生产环境中使用其内置的安全插件进行加固。如果你需要更强大的可视化管理工具,可以配合安装 INFINI Console,它能为你提供更直观的数据监控与管理界面。

参考资源: