你不会是程序猿吧?

【搜索客社区日报】第2068期 (2025-07-03)

1.Higress 新增 MCP 服务管理,助力构建私有 MCP 市场
https://mp.weixin.qq.com/s/CoFyJMX7cHEKUFSSbKtvZQ
2.14G 显存跑动千亿大模型!基于 KTransformers 的 DeepSeek-R1'满血版'实战
https://mp.weixin.qq.com/s/XIsVYxQgp2tCbWHFFb95xg
3.Muon作者仅用一篇博客,就被OpenAI看中了
https://mp.weixin.qq.com/s/Ijez32vojwSuyJkycKJQ9g

编辑:Se7en
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Higress 新增 MCP 服务管理,助力构建私有 MCP 市场
https://mp.weixin.qq.com/s/CoFyJMX7cHEKUFSSbKtvZQ
2.14G 显存跑动千亿大模型!基于 KTransformers 的 DeepSeek-R1'满血版'实战
https://mp.weixin.qq.com/s/XIsVYxQgp2tCbWHFFb95xg
3.Muon作者仅用一篇博客,就被OpenAI看中了
https://mp.weixin.qq.com/s/Ijez32vojwSuyJkycKJQ9g

编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2067期 (2025-07-02)

1.在 Logstash 中使用 Ruby 脚本
https://elasticstack.blog.csdn ... 88999

2.NVIDIA 表示小型语言模型是 Agentic AI 的未来(搭梯)
https://cobusgreyling.medium.c ... d9565

3.使用 Gemini 2.0 Flash 对数百万份文档进行提取和 RAG(搭梯)
https://ai.gopubby.com/10x-che ... b3b54



编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.在 Logstash 中使用 Ruby 脚本
https://elasticstack.blog.csdn ... 88999

2.NVIDIA 表示小型语言模型是 Agentic AI 的未来(搭梯)
https://cobusgreyling.medium.c ... d9565

3.使用 Gemini 2.0 Flash 对数百万份文档进行提取和 RAG(搭梯)
https://ai.gopubby.com/10x-che ... b3b54



编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

INFINI Labs 产品更新 | Coco AI v0.6 发布 - 插件商店上线

release

INFINI Labs 产品更新发布!此次更新涵盖 Coco AI 、Easysearch 等产品多项重要升级,其中 Coco AI 新增插件商店,方便用户安装和卸载插件,重构了搜索 API,优化聊天展示等,进一步提升 AI 搜索能力、易用性。

以下为详细更新介绍:

Coco AI v0.6

Coco AI 是一款完全开源、专注于混合云平台的企业级 AI 搜索与智能助手系统。它通过统一搜索入口,连接企业内外部的异构数据源,颠覆了企业访问和获取信息的方式和途径;同时 Coco AI 利用大模型能力和机器学习技术,能够为每个用户创建个性化知识图谱,进而优化个人及公司决策协作流程。

Coco AI 本次详细更新记录如下:

Coco AI 客户端 v0.6

功能更新

  • 添加插件商店 #699

  • 历史列表支持快捷键操作(选择、删除等) #700
  • 添加 「检查更新」按钮 #701
  • 添加 app 索引重建按钮来索引最新的 app #719

问题修复

  • 快速 AI 状态进行同步 #693
  • 打开/关闭插件应该也设置/取消快捷键 #691
  • 在 refresh 时,将在线的 Coco server 重新添加会搜索列表 #696
  • 输入框支持空格输入进行检索 #709
  • 搜索右键菜单失效问题 #713
  • 搜索窗口在搜索界面,底边栏提示消息错误的问题 #722

优化改进

  • 插件的唯一标识变更为「作者 ID/插件 ID」 #643
  • 重构了搜索 API #679
  • 继续聊天展示优化 #690
  • 服务器列表支持快捷键 enter 选择 #692
  • 添加最新版本检查消息展示 #703
  • 在日志中记录插件命令的执行结果 #718

Coco AI 服务端 v0.6

问题修复

  • 从 assistant search 中移除 manually_renamed_title

INFINI Easysearch v1.13.1

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

Easysearch 本次更新如下:

功能更新

  • 插件模块新增 dependencyModule 配置项,用于声明共享的 common 模块依赖

问题修复

  • 修复了前缀查询请求在只包含一个字符时的空指针错误

优化改进

  • 精简了部署后的 modules 和 plugins 大小

INFINI Framework v1.1.9

INFINI Framework 是 INFINI Labs 基于 Golang 的产品的核心基础,已开源。该框架以开发者为中心设计,简化了构建高性能、可扩展且可靠的应用程序的过程。

Framework 本次更新如下:

问题修复

  • 没有响应体的 response 不允许携带 trailers(#158)

优化改进

  • 重构错误处理逻辑 (#157)
  • 更新 Makefile (#156)

更多详情请查看以下详细的 Release Notes 或联系我们的技术支持团队!

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

下载地址: https://infinilabs.cn/download

邮件hello@infini.ltd

电话(+86) 400-139-9200

Discordhttps://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

继续阅读 »

release

INFINI Labs 产品更新发布!此次更新涵盖 Coco AI 、Easysearch 等产品多项重要升级,其中 Coco AI 新增插件商店,方便用户安装和卸载插件,重构了搜索 API,优化聊天展示等,进一步提升 AI 搜索能力、易用性。

以下为详细更新介绍:

Coco AI v0.6

Coco AI 是一款完全开源、专注于混合云平台的企业级 AI 搜索与智能助手系统。它通过统一搜索入口,连接企业内外部的异构数据源,颠覆了企业访问和获取信息的方式和途径;同时 Coco AI 利用大模型能力和机器学习技术,能够为每个用户创建个性化知识图谱,进而优化个人及公司决策协作流程。

Coco AI 本次详细更新记录如下:

Coco AI 客户端 v0.6

功能更新

  • 添加插件商店 #699

  • 历史列表支持快捷键操作(选择、删除等) #700
  • 添加 「检查更新」按钮 #701
  • 添加 app 索引重建按钮来索引最新的 app #719

问题修复

  • 快速 AI 状态进行同步 #693
  • 打开/关闭插件应该也设置/取消快捷键 #691
  • 在 refresh 时,将在线的 Coco server 重新添加会搜索列表 #696
  • 输入框支持空格输入进行检索 #709
  • 搜索右键菜单失效问题 #713
  • 搜索窗口在搜索界面,底边栏提示消息错误的问题 #722

优化改进

  • 插件的唯一标识变更为「作者 ID/插件 ID」 #643
  • 重构了搜索 API #679
  • 继续聊天展示优化 #690
  • 服务器列表支持快捷键 enter 选择 #692
  • 添加最新版本检查消息展示 #703
  • 在日志中记录插件命令的执行结果 #718

Coco AI 服务端 v0.6

问题修复

  • 从 assistant search 中移除 manually_renamed_title

INFINI Easysearch v1.13.1

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

Easysearch 本次更新如下:

功能更新

  • 插件模块新增 dependencyModule 配置项,用于声明共享的 common 模块依赖

问题修复

  • 修复了前缀查询请求在只包含一个字符时的空指针错误

优化改进

  • 精简了部署后的 modules 和 plugins 大小

INFINI Framework v1.1.9

INFINI Framework 是 INFINI Labs 基于 Golang 的产品的核心基础,已开源。该框架以开发者为中心设计,简化了构建高性能、可扩展且可靠的应用程序的过程。

Framework 本次更新如下:

问题修复

  • 没有响应体的 response 不允许携带 trailers(#158)

优化改进

  • 重构错误处理逻辑 (#157)
  • 更新 Makefile (#156)

更多详情请查看以下详细的 Release Notes 或联系我们的技术支持团队!

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

下载地址: https://infinilabs.cn/download

邮件hello@infini.ltd

电话(+86) 400-139-9200

Discordhttps://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

收起阅读 »

一键启动:使用 start-local 脚本轻松管理 INFINI Console 与 Easysearch 本地环境

系列回顾与引言

在我们的 INFINI 本地环境搭建系列博客中:

  1. 第一篇《搭建持久化的 INFINI Console 与 Easysearch 容器环境》,我们深入探讨了如何使用基础的 docker run 命令,一步步构建起 Console 和 Easysearch 服务,并重点解决了数据持久化的问题。
  2. 第二篇《使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建》,我们学习了如何利用 Docker Compose 的声明式配置,将多容器应用的定义和管理变得更加简洁高效。

虽然 Docker Compose 已经极大地提升了便利性,但在实际的开发和测试流程中,我们可能还需要处理版本选择、初始配置复制、多节点配置、指标采集开启等更细致的需求。为了进一步封装这些复杂性,提供真正的一键式体验,我们精心打造了一个强大的 Shell 脚本 start-local

本篇文章将带你领略 start-local 的魅力,看看它是如何将 Console 和 Easysearch (本文仍以 Console 1.29.6 和 Easysearch 1.13.0 为例) 的本地环境搭建与管理提升到一个全新的便捷高度——只需一行命令,即可拥有一个功能完备、数据持久的本地 INFINI Console 运行环境。

start-local:您的 INFINI Console 本地环境瑞士军刀

start-local 脚本(灵感来源于 elastic/start-local)集成了环境搭建的诸多最佳实践,旨在提供极致的易用性。它在后台仍然依赖 Docker 和 Docker Compose,但为用户屏蔽了底层的复杂配置细节。

核心功能:

  • 智能版本管理:自动获取 INFINI Console 和 Easysearch 的最新稳定版(或你指定的版本)作为默认镜像标签。
  • 动态配置生成:根据用户提供的命令行选项(如节点数、密码、版本等)自动生成 .envdocker-compose.yml 文件。
  • 初始配置自动处理:在首次启动或本地配置目录不存在时,自动从 Docker 镜像中提取并设置初始配置文件。
  • 一键式生命周期管理:通过简单的命令 (up, down, logs, clean) 管理整个应用的启动、停止、日志查看和彻底清理。
  • 持久化内置:默认将所有关键数据(配置、索引数据、日志)持久化到本地的 ./startlocal 目录(可配置)。
  • 集成 Agent 指标采集:通过 --metrics-agent 选项,轻松启用 Easysearch 的指标收集并自动配置其指向 INFINI Console。
  • 跨平台设计:主要针对 Linux 和 macOS 环境。

如何获取和使用 start-local

获取和执行 start-local 最便捷的方式是通过 curl 将脚本内容直接通过管道传递给 sh 执行:

# 启动默认配置 (Console + 1 个 Easysearch 节点)
curl -fsSL http://get.infini.cloud/start-local | sh -s

# 想要更丰富的体验?试试这个:
# 启动 3 个 Easysearch 节点,设置密码,并开启 Agent 指标采集
curl -fsSL http://get.infini.cloud/start-local | sh -s -- up --nodes 3 --password "MyDevPass123." --metrics-agent

(请将 http://get.infini.cloud/start-local 替换为脚本的实际官方获取地址)

sh -s -- 部分确保脚本从标准输入读取,并且后续参数能正确传递给脚本。

脚本执行后,所有操作文件和持久化数据都会在当前目录下的 ./startlocal (默认) 子目录中创建和管理。

start-local 命令和选项概览

通过 help 命令可以查看所有支持的功能:

curl -fsSL http://get.infini.cloud/start-local | sh -s -- help

以下是一些最常用的命令和选项:

命令 (COMMAND):

  • up: 核心命令。创建并启动定义的服务。自动处理初始配置。
  • down: 停止服务,移除容器、网络和相关匿名卷。本地持久化数据不受影响。
  • logs [服务名...]: 实时查看指定服务或所有服务的日志。
  • clean: 彻底清理。执行 down 后,删除整个工作目录 (./startlocal 及其所有内容)。
  • help: 显示帮助信息。

常用选项 (OPTIONS) (主要用于 up 命令):

  • -cv TAG, --console-version TAG: 指定 Console 镜像版本 (例如 1.29.6)。
  • -ev TAG, --easysearch-version TAG: 指定 Easysearch 镜像版本 (例如 1.13.0)。
  • -n N, --nodes N: Easysearch 节点数量 (默认 1)。
  • -p PASSWORD, --password PASSWORD: Easysearch admin 用户初始密码 (默认 ShouldChangeme123.)。
  • --services s1[,s2,...]: 指定要启动的服务 (可选值: console, easysearch)。如果未指定,默认启动两者。
  • --metrics-agent: 启用 Easysearch 指标收集代理。
  • -wd PATH, --work-dir PATH: 自定义工作目录,替代默认的 ./startlocal

实际操作示例

让我们通过几个示例来感受 start-local 的便捷:

1. 启动一个标准的开发环境 (Console + 1 个 Easysearch 节点,开启指标)

curl -fsSL http://get.infini.cloud/start-local | sh -s

脚本会自动完成所有后台工作:检查依赖、确定版本、创建工作目录、生成配置文件、复制初始配置、生成 docker-compose.yml,最后启动服务并打印访问地址。

2. 启动一个 3 节点的 Easysearch 集群,并指定版本和密码

curl -fsSL http://get.infini.cloud/start-local | sh -s -- up \
--nodes 3 \
--password "ComplexP@ssw0rd." \
--console-version 1.29.6 \
--easysearch-version 1.13.0 \
--services easysearch,console

脚本会智能处理多节点配置和持久化目录结构。

3. 查看所有服务的日志

curl -fsSL http://get.infini.cloud/start-local | sh -s -- logs

4. 停止运行环境(慎重操作)

curl -fsSL http://get.infini.cloud/start-local | sh -s -- down

这将停止运行的所有容器。

4. 删除运行环境(慎重操作)

curl -fsSL http://get.infini.cloud/start-local | sh -s -- clean

这将移除所有相关的 Docker 资源以及本地的 ./startlocal 目录。

持久化:数据安全无忧

start-local 脚本的核心设计之一就是确保数据的持久化。所有重要的配置、数据和日志都会映射到宿主机的 ./startlocal (或你通过 -wd 指定的) 目录下的结构化子目录中:

  • Console: ./startlocal/console/{config,data,logs}/
  • Easysearch (单节点): ./startlocal/easysearch/{config,data,logs}/
  • Easysearch (多节点): ./startlocal/easysearch/node-X/{config,data,logs}/

这意味着你可以随时 downup 你的环境,而不用担心丢失任何工作。

访问服务

启动成功后,脚本会打印出访问地址:

  • INFINI Console: http://localhost:9000 (默认主机端口)
  • INFINI Easysearch: https://localhost:9200 (默认主机端口,用户 admin,密码为你设置的或默认值)

总结:从复杂到简单,专注核心价值

从繁琐的 docker run 命令,到结构化的 docker-compose.yml,再到如今便捷的 start-local 脚本,我们一步步简化了 INFINI 本地环境的搭建和管理过程。start-local 将所有底层的复杂性封装起来,让你能够通过一行命令就拥有一个功能齐全、数据持久的本地环境,从而更专注于应用本身的功能测试、开发和学习。

这正是良好工具的价值所在——让复杂的事情变简单,让我们能更高效地创造。

希望这个 start-local 脚本能成为你日常工作中得力的助手!如果你有任何建议或发现问题,欢迎通过项目仓库反馈。

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:http://localhost:1313/blog/2025/console-easysearch-start-local/

继续阅读 »

系列回顾与引言

在我们的 INFINI 本地环境搭建系列博客中:

  1. 第一篇《搭建持久化的 INFINI Console 与 Easysearch 容器环境》,我们深入探讨了如何使用基础的 docker run 命令,一步步构建起 Console 和 Easysearch 服务,并重点解决了数据持久化的问题。
  2. 第二篇《使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建》,我们学习了如何利用 Docker Compose 的声明式配置,将多容器应用的定义和管理变得更加简洁高效。

虽然 Docker Compose 已经极大地提升了便利性,但在实际的开发和测试流程中,我们可能还需要处理版本选择、初始配置复制、多节点配置、指标采集开启等更细致的需求。为了进一步封装这些复杂性,提供真正的一键式体验,我们精心打造了一个强大的 Shell 脚本 start-local

本篇文章将带你领略 start-local 的魅力,看看它是如何将 Console 和 Easysearch (本文仍以 Console 1.29.6 和 Easysearch 1.13.0 为例) 的本地环境搭建与管理提升到一个全新的便捷高度——只需一行命令,即可拥有一个功能完备、数据持久的本地 INFINI Console 运行环境。

start-local:您的 INFINI Console 本地环境瑞士军刀

start-local 脚本(灵感来源于 elastic/start-local)集成了环境搭建的诸多最佳实践,旨在提供极致的易用性。它在后台仍然依赖 Docker 和 Docker Compose,但为用户屏蔽了底层的复杂配置细节。

核心功能:

  • 智能版本管理:自动获取 INFINI Console 和 Easysearch 的最新稳定版(或你指定的版本)作为默认镜像标签。
  • 动态配置生成:根据用户提供的命令行选项(如节点数、密码、版本等)自动生成 .envdocker-compose.yml 文件。
  • 初始配置自动处理:在首次启动或本地配置目录不存在时,自动从 Docker 镜像中提取并设置初始配置文件。
  • 一键式生命周期管理:通过简单的命令 (up, down, logs, clean) 管理整个应用的启动、停止、日志查看和彻底清理。
  • 持久化内置:默认将所有关键数据(配置、索引数据、日志)持久化到本地的 ./startlocal 目录(可配置)。
  • 集成 Agent 指标采集:通过 --metrics-agent 选项,轻松启用 Easysearch 的指标收集并自动配置其指向 INFINI Console。
  • 跨平台设计:主要针对 Linux 和 macOS 环境。

如何获取和使用 start-local

获取和执行 start-local 最便捷的方式是通过 curl 将脚本内容直接通过管道传递给 sh 执行:

# 启动默认配置 (Console + 1 个 Easysearch 节点)
curl -fsSL http://get.infini.cloud/start-local | sh -s

# 想要更丰富的体验?试试这个:
# 启动 3 个 Easysearch 节点,设置密码,并开启 Agent 指标采集
curl -fsSL http://get.infini.cloud/start-local | sh -s -- up --nodes 3 --password "MyDevPass123." --metrics-agent

(请将 http://get.infini.cloud/start-local 替换为脚本的实际官方获取地址)

sh -s -- 部分确保脚本从标准输入读取,并且后续参数能正确传递给脚本。

脚本执行后,所有操作文件和持久化数据都会在当前目录下的 ./startlocal (默认) 子目录中创建和管理。

start-local 命令和选项概览

通过 help 命令可以查看所有支持的功能:

curl -fsSL http://get.infini.cloud/start-local | sh -s -- help

以下是一些最常用的命令和选项:

命令 (COMMAND):

  • up: 核心命令。创建并启动定义的服务。自动处理初始配置。
  • down: 停止服务,移除容器、网络和相关匿名卷。本地持久化数据不受影响。
  • logs [服务名...]: 实时查看指定服务或所有服务的日志。
  • clean: 彻底清理。执行 down 后,删除整个工作目录 (./startlocal 及其所有内容)。
  • help: 显示帮助信息。

常用选项 (OPTIONS) (主要用于 up 命令):

  • -cv TAG, --console-version TAG: 指定 Console 镜像版本 (例如 1.29.6)。
  • -ev TAG, --easysearch-version TAG: 指定 Easysearch 镜像版本 (例如 1.13.0)。
  • -n N, --nodes N: Easysearch 节点数量 (默认 1)。
  • -p PASSWORD, --password PASSWORD: Easysearch admin 用户初始密码 (默认 ShouldChangeme123.)。
  • --services s1[,s2,...]: 指定要启动的服务 (可选值: console, easysearch)。如果未指定,默认启动两者。
  • --metrics-agent: 启用 Easysearch 指标收集代理。
  • -wd PATH, --work-dir PATH: 自定义工作目录,替代默认的 ./startlocal

实际操作示例

让我们通过几个示例来感受 start-local 的便捷:

1. 启动一个标准的开发环境 (Console + 1 个 Easysearch 节点,开启指标)

curl -fsSL http://get.infini.cloud/start-local | sh -s

脚本会自动完成所有后台工作:检查依赖、确定版本、创建工作目录、生成配置文件、复制初始配置、生成 docker-compose.yml,最后启动服务并打印访问地址。

2. 启动一个 3 节点的 Easysearch 集群,并指定版本和密码

curl -fsSL http://get.infini.cloud/start-local | sh -s -- up \
--nodes 3 \
--password "ComplexP@ssw0rd." \
--console-version 1.29.6 \
--easysearch-version 1.13.0 \
--services easysearch,console

脚本会智能处理多节点配置和持久化目录结构。

3. 查看所有服务的日志

curl -fsSL http://get.infini.cloud/start-local | sh -s -- logs

4. 停止运行环境(慎重操作)

curl -fsSL http://get.infini.cloud/start-local | sh -s -- down

这将停止运行的所有容器。

4. 删除运行环境(慎重操作)

curl -fsSL http://get.infini.cloud/start-local | sh -s -- clean

这将移除所有相关的 Docker 资源以及本地的 ./startlocal 目录。

持久化:数据安全无忧

start-local 脚本的核心设计之一就是确保数据的持久化。所有重要的配置、数据和日志都会映射到宿主机的 ./startlocal (或你通过 -wd 指定的) 目录下的结构化子目录中:

  • Console: ./startlocal/console/{config,data,logs}/
  • Easysearch (单节点): ./startlocal/easysearch/{config,data,logs}/
  • Easysearch (多节点): ./startlocal/easysearch/node-X/{config,data,logs}/

这意味着你可以随时 downup 你的环境,而不用担心丢失任何工作。

访问服务

启动成功后,脚本会打印出访问地址:

  • INFINI Console: http://localhost:9000 (默认主机端口)
  • INFINI Easysearch: https://localhost:9200 (默认主机端口,用户 admin,密码为你设置的或默认值)

总结:从复杂到简单,专注核心价值

从繁琐的 docker run 命令,到结构化的 docker-compose.yml,再到如今便捷的 start-local 脚本,我们一步步简化了 INFINI 本地环境的搭建和管理过程。start-local 将所有底层的复杂性封装起来,让你能够通过一行命令就拥有一个功能齐全、数据持久的本地环境,从而更专注于应用本身的功能测试、开发和学习。

这正是良好工具的价值所在——让复杂的事情变简单,让我们能更高效地创造。

希望这个 start-local 脚本能成为你日常工作中得力的助手!如果你有任何建议或发现问题,欢迎通过项目仓库反馈。

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:http://localhost:1313/blog/2025/console-easysearch-start-local/

收起阅读 »

使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建

前言回顾

在上一篇文章《搭建持久化的 INFINI Console 与 Easysearch 容器环境》中,我们详细介绍了如何使用基础的 docker run 命令,手动启动和配置 INFINI Console (1.29.6) 和 INFINI Easysearch (1.13.0) 容器,并实现了关键数据的持久化,解决了重启后配置丢失的问题。

手动操作虽然能让我们深入理解 Docker 的核心机制,但在管理多个容器、网络和卷时,命令会变得冗长且容易出错。这时,Docker Compose 就派上了用场。它允许我们使用一个 YAML 文件来定义和运行多容器 Docker 应用程序。

本篇文章将演示如何将上一篇的手动步骤转换为使用 Docker Compose,让你更轻松地管理和维护这套本地开发测试环境。

Docker Compose 的优势

使用 Docker Compose 带来了诸多好处:

  • 声明式配置:在一个 docker-compose.yml 文件中定义所有服务、网络和卷,清晰明了。
  • 一键式管理:使用简单的命令(如 docker compose up, docker compose down)即可启动、停止和重建整个应用环境。
  • 简化网络和服务连接:Compose 会自动处理服务间的网络设置和依赖关系。
  • 易于共享和版本控制docker-compose.yml 文件可以轻松地与团队共享并通过版本控制系统(如 Git)进行管理。

准备工作

与上一篇类似,你需要:

  • 操作系统: macOS (本文示例)
  • Docker 环境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。
  • 确保 Docker Compose V2 (docker compose) 或 V1 (docker-compose) 已安装并可用。

查看 docker compose 版本

docker compose version
Docker Compose version v2.24.5

步骤一:项目目录结构

我们将继续使用上一篇文章中创建的目录结构。如果你还没有创建,或者想重新开始,可以在你的项目根目录(例如 ~/infini_compose_lab)下创建如下结构:

# 1. 创建项目根目录
mkdir -p ~/infini_compose_lab
cd ~/infini_compose_lab

# 2. 为 Console 和 Easysearch 创建持久化子目录
# 这些目录将用于存储配置、数据和日志
mkdir -p console/config console/data console/logs
mkdir -p easysearch/config easysearch/data easysearch/logs

步骤二:提取初始配置文件

这一步与上一篇完全相同。你在首次启动时使用从镜像中提取的默认配置,请执行以下操作。如果这些目录中已存在配置文件(例如从上一篇博客的操作中保留下来的),Docker Compose 在挂载时会直接使用它们。

1. INFINI Console (1.29.6) 初始配置 (容器内配置路径: /config)

# 确保在 ~/infini_compose_lab 目录下
docker pull infinilabs/console:1.29.6
docker run --rm \
-v $PWD/console/config:/temp_host_config \
infinilabs/console:1.29.6 \
sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置 (容器内配置路径: /app/easysearch/config,初始密码: INFINILabs01)

重要提示:请务必为 Easysearch 设置安全的密码。

# 确保在 ~/infini_compose_lab 目录下
docker pull infinilabs/easysearch:1.13.0
docker run --rm \
-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
-v $PWD/easysearch/config:/temp_host_config \
infinilabs/easysearch:1.13.0 \
sh -c "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

步骤三:创建 docker-compose.yml 文件

这是核心步骤。在你的项目根目录 ~/infini_compose_lab 下,创建一个名为 docker-compose.yml 的文件,并填入以下内容。这个文件定义了我们的服务、它们如何运行以及它们如何交互。

cat <<EOF > docker-compose.yml
services:
  easysearch:
    image: infinilabs/easysearch:1.13.0
    container_name: infini-easysearch
    environment:
      - cluster.name=infini_compose_cluster
      - node.name=node-01
      - cluster.initial_master_nodes=node-01
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - EASYSEARCH_INITIAL_ADMIN_PASSWORD=INFINILabs01
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./easysearch/config:/app/easysearch/config
      - ./easysearch/data:/app/easysearch/data
      - ./easysearch/logs:/app/easysearch/logs
    ulimits:
      memlock: {soft: -1, hard: -1}
      nofile: {soft: 65536, hard: 65536}
    networks:
      - infini_app_net

  console:
    image: infinilabs/console:1.29.6
    container_name: infini-console
    ports:
      - "9000:9000"
    volumes:
      - ./console/config:/config
      - ./console/data:/data
      - ./console/logs:/log
    networks:
      - infini_app_net

networks:
  infini_app_net:
    driver: bridge
EOF

docker-compose.yml 文件关键点:

  • services: 定义了 easysearchconsole 两个服务。
  • image: 指定了每个服务使用的 Docker 镜像和版本。
  • container_name: 为容器指定一个易于识别的名称。
  • environment: 设置容器的环境变量。
  • Easysearch 单节点配置: 注意 cluster.initial_master_nodes 设置为节点自身的名称。
  • ports: 将容器的端口映射到宿主机的端口。
  • volumes: 实现持久化的核心。将宿主机当前目录 (./) 下的 console/*easysearch/* 子目录分别映射到容器内对应的路径。
  • networks: 将两个服务都连接到我们定义的 infini_app_net 网络。这使得 console 服务可以通过服务名 easysearch (例如 https://easysearch:9200) 来访问 easysearch 服务。

步骤四:使用 Docker Compose 启动环境

现在,所有配置都在 docker-compose.yml 文件中了。启动整个环境只需要一条命令。 在 ~/infini_compose_lab 目录下(包含 docker-compose.yml 文件),执行:

docker compose up -d
  • docker compose (V2) 或 docker-compose (V1)。
  • up: 创建并启动在 docker-compose.yml 中定义的所有服务。
  • -d: 后台模式运行。

首次运行时,如果本地没有对应的镜像,Docker Compose 会自动拉取。

常用 Docker Compose 命令:

  • 查看服务状态:
docker compose ps
  • 查看所有服务的实时日志:
docker compose logs -f
  • 查看特定服务的日志:
docker compose logs -f console
docker compose logs -f easysearch
  • 停止所有服务(保留数据):
docker compose stop
  • 停止并移除所有容器、网络和匿名卷(保留通过 volumes 映射的本地数据):
docker compose down

步骤五:验证和使用

  1. 访问 Console: 浏览器打开 http://localhost:9000
  2. 进行配置: 在 Console 中连接 Easysearch (https://easysearch:9200,因为它们在同一个 Docker 网络中,可以直接使用服务名),创建用户,查看监控等。
  3. 测试持久化:
docker compose down # 停止并移除容器
# 稍等片刻
docker compose up -d # 重新启动

再次访问 http://localhost:9000,你会发现之前的配置都还在!

操作截图

彻底清理,包括删除命名卷(如果使用了的话)和本地数据(可选)

# -v 移除命名卷
docker compose down -v
# 然后手动删除本地持久化目录
rm -rf ~/infini_compose_lab/console
rm -rf ~/infini_compose_lab/easysearch

总结

通过 Docker Compose,我们用一个简洁的 docker-compose.yml 文件取代了之前冗长的 docker run 命令,极大地简化了 INFINI Console 和 Easysearch 本地环境的搭建和管理过程。同时,通过正确的卷挂载配置,我们依然确保了数据的持久化,解决了重启后配置丢失的问题。

对于开发、测试和快速原型验证,Docker Compose 无疑是一个强大而高效的工具。希望本教程能帮助你更轻松地使用 INFINI Console 进行本地实验和开发!

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:https://infinilabs.cn/blog/2025/console-easysearch-with-docker-compose/

继续阅读 »

前言回顾

在上一篇文章《搭建持久化的 INFINI Console 与 Easysearch 容器环境》中,我们详细介绍了如何使用基础的 docker run 命令,手动启动和配置 INFINI Console (1.29.6) 和 INFINI Easysearch (1.13.0) 容器,并实现了关键数据的持久化,解决了重启后配置丢失的问题。

手动操作虽然能让我们深入理解 Docker 的核心机制,但在管理多个容器、网络和卷时,命令会变得冗长且容易出错。这时,Docker Compose 就派上了用场。它允许我们使用一个 YAML 文件来定义和运行多容器 Docker 应用程序。

本篇文章将演示如何将上一篇的手动步骤转换为使用 Docker Compose,让你更轻松地管理和维护这套本地开发测试环境。

Docker Compose 的优势

使用 Docker Compose 带来了诸多好处:

  • 声明式配置:在一个 docker-compose.yml 文件中定义所有服务、网络和卷,清晰明了。
  • 一键式管理:使用简单的命令(如 docker compose up, docker compose down)即可启动、停止和重建整个应用环境。
  • 简化网络和服务连接:Compose 会自动处理服务间的网络设置和依赖关系。
  • 易于共享和版本控制docker-compose.yml 文件可以轻松地与团队共享并通过版本控制系统(如 Git)进行管理。

准备工作

与上一篇类似,你需要:

  • 操作系统: macOS (本文示例)
  • Docker 环境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。
  • 确保 Docker Compose V2 (docker compose) 或 V1 (docker-compose) 已安装并可用。

查看 docker compose 版本

docker compose version
Docker Compose version v2.24.5

步骤一:项目目录结构

我们将继续使用上一篇文章中创建的目录结构。如果你还没有创建,或者想重新开始,可以在你的项目根目录(例如 ~/infini_compose_lab)下创建如下结构:

# 1. 创建项目根目录
mkdir -p ~/infini_compose_lab
cd ~/infini_compose_lab

# 2. 为 Console 和 Easysearch 创建持久化子目录
# 这些目录将用于存储配置、数据和日志
mkdir -p console/config console/data console/logs
mkdir -p easysearch/config easysearch/data easysearch/logs

步骤二:提取初始配置文件

这一步与上一篇完全相同。你在首次启动时使用从镜像中提取的默认配置,请执行以下操作。如果这些目录中已存在配置文件(例如从上一篇博客的操作中保留下来的),Docker Compose 在挂载时会直接使用它们。

1. INFINI Console (1.29.6) 初始配置 (容器内配置路径: /config)

# 确保在 ~/infini_compose_lab 目录下
docker pull infinilabs/console:1.29.6
docker run --rm \
-v $PWD/console/config:/temp_host_config \
infinilabs/console:1.29.6 \
sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置 (容器内配置路径: /app/easysearch/config,初始密码: INFINILabs01)

重要提示:请务必为 Easysearch 设置安全的密码。

# 确保在 ~/infini_compose_lab 目录下
docker pull infinilabs/easysearch:1.13.0
docker run --rm \
-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
-v $PWD/easysearch/config:/temp_host_config \
infinilabs/easysearch:1.13.0 \
sh -c "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

步骤三:创建 docker-compose.yml 文件

这是核心步骤。在你的项目根目录 ~/infini_compose_lab 下,创建一个名为 docker-compose.yml 的文件,并填入以下内容。这个文件定义了我们的服务、它们如何运行以及它们如何交互。

cat <<EOF > docker-compose.yml
services:
  easysearch:
    image: infinilabs/easysearch:1.13.0
    container_name: infini-easysearch
    environment:
      - cluster.name=infini_compose_cluster
      - node.name=node-01
      - cluster.initial_master_nodes=node-01
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - EASYSEARCH_INITIAL_ADMIN_PASSWORD=INFINILabs01
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./easysearch/config:/app/easysearch/config
      - ./easysearch/data:/app/easysearch/data
      - ./easysearch/logs:/app/easysearch/logs
    ulimits:
      memlock: {soft: -1, hard: -1}
      nofile: {soft: 65536, hard: 65536}
    networks:
      - infini_app_net

  console:
    image: infinilabs/console:1.29.6
    container_name: infini-console
    ports:
      - "9000:9000"
    volumes:
      - ./console/config:/config
      - ./console/data:/data
      - ./console/logs:/log
    networks:
      - infini_app_net

networks:
  infini_app_net:
    driver: bridge
EOF

docker-compose.yml 文件关键点:

  • services: 定义了 easysearchconsole 两个服务。
  • image: 指定了每个服务使用的 Docker 镜像和版本。
  • container_name: 为容器指定一个易于识别的名称。
  • environment: 设置容器的环境变量。
  • Easysearch 单节点配置: 注意 cluster.initial_master_nodes 设置为节点自身的名称。
  • ports: 将容器的端口映射到宿主机的端口。
  • volumes: 实现持久化的核心。将宿主机当前目录 (./) 下的 console/*easysearch/* 子目录分别映射到容器内对应的路径。
  • networks: 将两个服务都连接到我们定义的 infini_app_net 网络。这使得 console 服务可以通过服务名 easysearch (例如 https://easysearch:9200) 来访问 easysearch 服务。

步骤四:使用 Docker Compose 启动环境

现在,所有配置都在 docker-compose.yml 文件中了。启动整个环境只需要一条命令。 在 ~/infini_compose_lab 目录下(包含 docker-compose.yml 文件),执行:

docker compose up -d
  • docker compose (V2) 或 docker-compose (V1)。
  • up: 创建并启动在 docker-compose.yml 中定义的所有服务。
  • -d: 后台模式运行。

首次运行时,如果本地没有对应的镜像,Docker Compose 会自动拉取。

常用 Docker Compose 命令:

  • 查看服务状态:
docker compose ps
  • 查看所有服务的实时日志:
docker compose logs -f
  • 查看特定服务的日志:
docker compose logs -f console
docker compose logs -f easysearch
  • 停止所有服务(保留数据):
docker compose stop
  • 停止并移除所有容器、网络和匿名卷(保留通过 volumes 映射的本地数据):
docker compose down

步骤五:验证和使用

  1. 访问 Console: 浏览器打开 http://localhost:9000
  2. 进行配置: 在 Console 中连接 Easysearch (https://easysearch:9200,因为它们在同一个 Docker 网络中,可以直接使用服务名),创建用户,查看监控等。
  3. 测试持久化:
docker compose down # 停止并移除容器
# 稍等片刻
docker compose up -d # 重新启动

再次访问 http://localhost:9000,你会发现之前的配置都还在!

操作截图

彻底清理,包括删除命名卷(如果使用了的话)和本地数据(可选)

# -v 移除命名卷
docker compose down -v
# 然后手动删除本地持久化目录
rm -rf ~/infini_compose_lab/console
rm -rf ~/infini_compose_lab/easysearch

总结

通过 Docker Compose,我们用一个简洁的 docker-compose.yml 文件取代了之前冗长的 docker run 命令,极大地简化了 INFINI Console 和 Easysearch 本地环境的搭建和管理过程。同时,通过正确的卷挂载配置,我们依然确保了数据的持久化,解决了重启后配置丢失的问题。

对于开发、测试和快速原型验证,Docker Compose 无疑是一个强大而高效的工具。希望本教程能帮助你更轻松地使用 INFINI Console 进行本地实验和开发!

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:https://infinilabs.cn/blog/2025/console-easysearch-with-docker-compose/

收起阅读 »

如何搭建持久化的 INFINI Console 与 Easysearch 容器环境

背景介绍

许多用户在使用 Docker 部署 INFINI Console(本文使用 1.29.6 版本)时,可能会遇到一个常见问题:重启容器后,之前在 INFINI Console 中所连接的系统集群配置会丢失。这个问题通常源于未能正确配置 Docker 的数据持久化。原本通过 Docker 运行 INFINI Console 只是一个简单的测试示例,并未考虑多次重启使用,现官方文档也进行了更新,参考:容器部署

接下来我们本地测试一下。

理解核心问题:Docker 容器与数据持久化

默认情况下,Docker 容器的文件系统是临时的。当容器被停止并删除后,容器内部所做的任何未被持久化的更改都会丢失。INFINI Console 的配置存储在其容器内部的特定目录中。为了在容器重启或重建后保留这些信息,我们必须将这些关键目录映射到宿主机(你的电脑)上的持久化存储位置。

准备工作

  • 操作系统: macOS (本文示例)
  • Docker 环境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。

请确保 Docker 服务已启动并正常运行。你可以通过在终端执行 docker --version 来验证。

docker --version
Docker version 25.0.5, build 5dc9bcc

步骤一:创建本地持久化目录和自定义 Docker 网络

首先,在宿主机上为 Console 和 Easysearch 创建用于存储配置、数据和日志的目录。同时,创建一个自定义 Docker 网络,以便容器之间可以通过名称进行通信。

# 1. 创建项目根目录和各个服务的持久化子目录
mkdir -p ~/infini_manual_setup/console/config ~/infini_manual_setup/console/data ~/infini_manual_setup/console/logs
mkdir -p ~/infini_manual_setup/easysearch/config ~/infini_manual_setup/easysearch/data ~/infini_manual_setup/easysearch/logs
cd ~/infini_manual_setup

# 2. 创建一个自定义的 Docker 桥接网络
docker network create infini_app_net
  • infini_app_net 是我们为这两个容器创建的自定义网络名称。

步骤二:提取初始配置文件

为了方便首次启动和后续自定义,我们需要从官方 Docker 镜像中提取默认的配置文件到我们本地创建的持久化目录中。

1. INFINI Console (1.29.6) 初始配置 根据 INFINI Console 官方 Docker 文档,其容器内配置文件位于 /config

docker pull infinilabs/console:1.29.6
docker run --rm \
    -v $PWD/console/config:/temp_host_config \
    infinilabs/console:1.29.6 \
    sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置 INFINI Easysearch 镜像内部的配置文件位于 /app/easysearch/config,并且需要初始管理员密码 INFINILabs01

重要提示:请务必为 Easysearch 设置安全的密码。

docker pull infinilabs/easysearch:1.13.0
docker run --rm \
    -e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
    -v $PWD/easysearch/config:/temp_host_config \
    infinilabs/easysearch:1.13.0 \
    sh -c "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

现在,你的本地 console/configeasysearch/config 目录应该包含了初始配置文件。

检查目录如下

tree -L 3 .
.
├── console
│   ├── config
│   │   ├── install_agent.tpl
│   │   ├── permission.json
│   │   ├── setup
│   │   └── system_config.tpl
│   ├── data
│   └── logs
└── easysearch
    ├── config
    │   ├── admin.crt
    │   ├── admin.key
    │   ├── analysis-ik
    │   ├── ca.crt
    │   ├── ca.key
    │   ├── easysearch.yml
    │   ├── easysearch.yml.example
    │   ├── instance.crt
    │   ├── instance.key
    │   ├── jvm.options
    │   ├── jvm.options.d
    │   ├── log4j2.properties
    │   └── security
    ├── data
    └── logs

步骤三:手动运行 INFINI Easysearch 容器

使用 docker run 命令启动 Easysearch,并配置端口映射、环境变量和最重要的——卷挂载。

docker run -d \
--name easysearch01 \
--network infini_app_net \
-p 9200:9200 \
-p 9300:9300 \
-e cluster.name="infini_local_cluster" \
-e node.name="easysearch-node01" \
-e cluster.initial_master_nodes="easysearch-node01" \
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
-v $PWD/easysearch/config:/app/easysearch/config \
-v $PWD/easysearch/data:/app/easysearch/data \
-v $PWD/easysearch/logs:/app/easysearch/logs \
--ulimit memlock=-1:-1 \
--ulimit nofile=65536:65536 \
infinilabs/easysearch:1.13.0

关键参数解释:

  • --name easysearch01: 为容器指定一个名称。
  • --network infini_app_net: 连接到自定义网络。
  • -p HOST_PORT:CONTAINER_PORT: 端口映射。
  • -e VARIABLE=VALUE: 设置环境变量。
  • -v $PWD/host/path:/container/path: 实现持久化的核心。将宿主机当前工作目录 ($PWD) 下的子目录映射到容器内的指定路径。

步骤四:手动运行 INFINI Console 容器

现在启动 Console 容器,同样配置网络、端口、环境变量和卷挂载。

docker run -d \
--name console01 \
--network infini_app_net \
-p 9000:9000 \
-v $PWD/console/config:/config \
-v $PWD/console/data:/data \
-v $PWD/console/logs:/log \
infinilabs/console:1.29.6

查看日志

docker logs -f easysearch01
docker logs -f console01

步骤五:验证服务和持久化

  1. 检查容器状态: docker ps (应能看到 easysearch01console01)。
  2. 访问 Console: 浏览器打开 http://localhost:9000
  3. 在 Console 中进行初始化配置
  4. 测试持久化 (重启 Console 容器):
docker stop console01
docker rm console01
# 重新运行步骤四中启动 Console 的 docker run 命令 (确保所有参数一致)

操作截图

再次访问 Console: 打开 http://localhost:9000。如果一切正常,证明持久化成功。

步骤六:停止和清理(可选)

  • 停止容器: docker stop console01 easysearch01
  • 移除容器: docker rm console01 easysearch01
  • 移除网络: docker network rm infini_app_net
  • 移除本地持久化数据 (如果不再需要):
rm -rf ~/infini_manual_setup/console
rm -rf ~/infini_manual_setup/easysearch

总结

通过 docker run 命令并仔细配置卷挂载,我们成功地为 INFINI Console 和 Easysearch 构建了一个具有持久化能力的本地容器环境,有效解决了重启后配置丢失的问题。虽然手动操作参数较多,但它能让你更清晰地理解 Docker 的核心机制。

在后续的文章中,我们将探讨如何使用 Docker Compose 来简化这一过程。

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:https://infinilabs.cn/blog/2025/console-easysearch-with-docker/

继续阅读 »

背景介绍

许多用户在使用 Docker 部署 INFINI Console(本文使用 1.29.6 版本)时,可能会遇到一个常见问题:重启容器后,之前在 INFINI Console 中所连接的系统集群配置会丢失。这个问题通常源于未能正确配置 Docker 的数据持久化。原本通过 Docker 运行 INFINI Console 只是一个简单的测试示例,并未考虑多次重启使用,现官方文档也进行了更新,参考:容器部署

接下来我们本地测试一下。

理解核心问题:Docker 容器与数据持久化

默认情况下,Docker 容器的文件系统是临时的。当容器被停止并删除后,容器内部所做的任何未被持久化的更改都会丢失。INFINI Console 的配置存储在其容器内部的特定目录中。为了在容器重启或重建后保留这些信息,我们必须将这些关键目录映射到宿主机(你的电脑)上的持久化存储位置。

准备工作

  • 操作系统: macOS (本文示例)
  • Docker 环境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。

请确保 Docker 服务已启动并正常运行。你可以通过在终端执行 docker --version 来验证。

docker --version
Docker version 25.0.5, build 5dc9bcc

步骤一:创建本地持久化目录和自定义 Docker 网络

首先,在宿主机上为 Console 和 Easysearch 创建用于存储配置、数据和日志的目录。同时,创建一个自定义 Docker 网络,以便容器之间可以通过名称进行通信。

# 1. 创建项目根目录和各个服务的持久化子目录
mkdir -p ~/infini_manual_setup/console/config ~/infini_manual_setup/console/data ~/infini_manual_setup/console/logs
mkdir -p ~/infini_manual_setup/easysearch/config ~/infini_manual_setup/easysearch/data ~/infini_manual_setup/easysearch/logs
cd ~/infini_manual_setup

# 2. 创建一个自定义的 Docker 桥接网络
docker network create infini_app_net
  • infini_app_net 是我们为这两个容器创建的自定义网络名称。

步骤二:提取初始配置文件

为了方便首次启动和后续自定义,我们需要从官方 Docker 镜像中提取默认的配置文件到我们本地创建的持久化目录中。

1. INFINI Console (1.29.6) 初始配置 根据 INFINI Console 官方 Docker 文档,其容器内配置文件位于 /config

docker pull infinilabs/console:1.29.6
docker run --rm \
    -v $PWD/console/config:/temp_host_config \
    infinilabs/console:1.29.6 \
    sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置 INFINI Easysearch 镜像内部的配置文件位于 /app/easysearch/config,并且需要初始管理员密码 INFINILabs01

重要提示:请务必为 Easysearch 设置安全的密码。

docker pull infinilabs/easysearch:1.13.0
docker run --rm \
    -e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
    -v $PWD/easysearch/config:/temp_host_config \
    infinilabs/easysearch:1.13.0 \
    sh -c "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

现在,你的本地 console/configeasysearch/config 目录应该包含了初始配置文件。

检查目录如下

tree -L 3 .
.
├── console
│   ├── config
│   │   ├── install_agent.tpl
│   │   ├── permission.json
│   │   ├── setup
│   │   └── system_config.tpl
│   ├── data
│   └── logs
└── easysearch
    ├── config
    │   ├── admin.crt
    │   ├── admin.key
    │   ├── analysis-ik
    │   ├── ca.crt
    │   ├── ca.key
    │   ├── easysearch.yml
    │   ├── easysearch.yml.example
    │   ├── instance.crt
    │   ├── instance.key
    │   ├── jvm.options
    │   ├── jvm.options.d
    │   ├── log4j2.properties
    │   └── security
    ├── data
    └── logs

步骤三:手动运行 INFINI Easysearch 容器

使用 docker run 命令启动 Easysearch,并配置端口映射、环境变量和最重要的——卷挂载。

docker run -d \
--name easysearch01 \
--network infini_app_net \
-p 9200:9200 \
-p 9300:9300 \
-e cluster.name="infini_local_cluster" \
-e node.name="easysearch-node01" \
-e cluster.initial_master_nodes="easysearch-node01" \
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
-v $PWD/easysearch/config:/app/easysearch/config \
-v $PWD/easysearch/data:/app/easysearch/data \
-v $PWD/easysearch/logs:/app/easysearch/logs \
--ulimit memlock=-1:-1 \
--ulimit nofile=65536:65536 \
infinilabs/easysearch:1.13.0

关键参数解释:

  • --name easysearch01: 为容器指定一个名称。
  • --network infini_app_net: 连接到自定义网络。
  • -p HOST_PORT:CONTAINER_PORT: 端口映射。
  • -e VARIABLE=VALUE: 设置环境变量。
  • -v $PWD/host/path:/container/path: 实现持久化的核心。将宿主机当前工作目录 ($PWD) 下的子目录映射到容器内的指定路径。

步骤四:手动运行 INFINI Console 容器

现在启动 Console 容器,同样配置网络、端口、环境变量和卷挂载。

docker run -d \
--name console01 \
--network infini_app_net \
-p 9000:9000 \
-v $PWD/console/config:/config \
-v $PWD/console/data:/data \
-v $PWD/console/logs:/log \
infinilabs/console:1.29.6

查看日志

docker logs -f easysearch01
docker logs -f console01

步骤五:验证服务和持久化

  1. 检查容器状态: docker ps (应能看到 easysearch01console01)。
  2. 访问 Console: 浏览器打开 http://localhost:9000
  3. 在 Console 中进行初始化配置
  4. 测试持久化 (重启 Console 容器):
docker stop console01
docker rm console01
# 重新运行步骤四中启动 Console 的 docker run 命令 (确保所有参数一致)

操作截图

再次访问 Console: 打开 http://localhost:9000。如果一切正常,证明持久化成功。

步骤六:停止和清理(可选)

  • 停止容器: docker stop console01 easysearch01
  • 移除容器: docker rm console01 easysearch01
  • 移除网络: docker network rm infini_app_net
  • 移除本地持久化数据 (如果不再需要):
rm -rf ~/infini_manual_setup/console
rm -rf ~/infini_manual_setup/easysearch

总结

通过 docker run 命令并仔细配置卷挂载,我们成功地为 INFINI Console 和 Easysearch 构建了一个具有持久化能力的本地容器环境,有效解决了重启后配置丢失的问题。虽然手动操作参数较多,但它能让你更清晰地理解 Docker 的核心机制。

在后续的文章中,我们将探讨如何使用 Docker Compose 来简化这一过程。

关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。

官网文档:https://docs.infinilabs.com/console/main/
开源地址:https://github.com/infinilabs/console

作者:罗厚付,极限科技(INFINI Labs)云上产品设计与研发负责人,拥有多年安全风控及大数据系统架构经验,主导过多个核心产品的设计与落地,日常负责运维超大规模 ES 集群(800+节点/1PB+数据)。
原文:https://infinilabs.cn/blog/2025/console-easysearch-with-docker/

收起阅读 »

【搜索客社区日报】第2066期 (2025-07-01)

1. 启动就要小5分钟,是ES在拖我后腿吗?(需要梯子)
https://medium.com/%40guptaarm ... d5aef

2. 用Kyverno Policies和他的朋友们做k8s的日志处理怎么搞(需要梯子)
https://medium.com/the-code-jo ... 80118

3. 零停机跨集群迁移,肘着(需要梯子)
https://medium.com/%40krishnac ... c1b5a

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
继续阅读 »
1. 启动就要小5分钟,是ES在拖我后腿吗?(需要梯子)
https://medium.com/%40guptaarm ... d5aef

2. 用Kyverno Policies和他的朋友们做k8s的日志处理怎么搞(需要梯子)
https://medium.com/the-code-jo ... 80118

3. 零停机跨集群迁移,肘着(需要梯子)
https://medium.com/%40krishnac ... c1b5a

编辑:斯蒂文
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2065期 (2025-06-30)

1、Elastic:什么是 MLOps?
https://elasticstack.blog.csdn ... 92617

2、Elasticsearch:什么是搜索相关性?
https://elasticstack.blog.csdn ... 45095

3、使用 Elasticsearch 构建一个用于真实健康数据的 MCP 服务器
https://elasticstack.blog.csdn ... 39749

4、如何将 Coco AI 与自定义数据源集成 ?
https://mp.weixin.qq.com/s/ZiPsEaxGrbDrHeC1ZWK3zw

5、日志文件是什么?
https://elasticstack.blog.csdn ... 05443

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、Elastic:什么是 MLOps?
https://elasticstack.blog.csdn ... 92617

2、Elasticsearch:什么是搜索相关性?
https://elasticstack.blog.csdn ... 45095

3、使用 Elasticsearch 构建一个用于真实健康数据的 MCP 服务器
https://elasticstack.blog.csdn ... 39749

4、如何将 Coco AI 与自定义数据源集成 ?
https://mp.weixin.qq.com/s/ZiPsEaxGrbDrHeC1ZWK3zw

5、日志文件是什么?
https://elasticstack.blog.csdn ... 05443

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2063期 (2025-06-26)

1.Speculative Decoding 推测解码方案详解
https://mp.weixin.qq.com/s/sdIt8PpZDZ8DB8iKJ4xoEA
2.让远程电脑成为你的AI助手 - Computer Use Agent 实践
https://mp.weixin.qq.com/s/YKelF9piI6RLvKQMZOU3Gg
3.Mooncake:将 P/D 分离进行到底
https://zhuanlan.zhihu.com/p/1711346141

编辑:Se7en
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Speculative Decoding 推测解码方案详解
https://mp.weixin.qq.com/s/sdIt8PpZDZ8DB8iKJ4xoEA
2.让远程电脑成为你的AI助手 - Computer Use Agent 实践
https://mp.weixin.qq.com/s/YKelF9piI6RLvKQMZOU3Gg
3.Mooncake:将 P/D 分离进行到底
https://zhuanlan.zhihu.com/p/1711346141

编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2062期 (2025-06-25)

1.如何在 Python 中连接 Elasticsearch 并使用 Qwen3 来实现 RAG
https://blog.csdn.net/UbuntuTo ... 53095

2.利用智能系统构建自演化知识图谱(搭梯)
https://medium.com/%40communit ... 3592c

3.三个数据处理技巧,永远改变你的es搜索体验
https://cloud.tencent.com/deve ... 32219

4.利用 Elastic 优化大模型的的成本和内容审核
https://cloud.tencent.com/deve ... 22292


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.如何在 Python 中连接 Elasticsearch 并使用 Qwen3 来实现 RAG
https://blog.csdn.net/UbuntuTo ... 53095

2.利用智能系统构建自演化知识图谱(搭梯)
https://medium.com/%40communit ... 3592c

3.三个数据处理技巧,永远改变你的es搜索体验
https://cloud.tencent.com/deve ... 32219

4.利用 Elastic 优化大模型的的成本和内容审核
https://cloud.tencent.com/deve ... 22292


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2061期 (2025-06-24)

1. 让老师傅来教你在Google k8s 集群搞一个自动扩容的ES集群(需要梯子)
https://medium.com/%40oredata- ... a065c
2. ES/CK/doris 谁才是你可观测的最终选择(需要梯子)
https://medium.com/%40ApacheDo ... d2176
3. 采集k8s集群日志实战(需要梯子)
https://medium.com/%40kikuchid ... 77928
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. 让老师傅来教你在Google k8s 集群搞一个自动扩容的ES集群(需要梯子)
https://medium.com/%40oredata- ... a065c
2. ES/CK/doris 谁才是你可观测的最终选择(需要梯子)
https://medium.com/%40ApacheDo ... d2176
3. 采集k8s集群日志实战(需要梯子)
https://medium.com/%40kikuchid ... 77928
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

【搜索客社区日报】第2060期 (2025-06-23)

1、搭建持久化的 INFINI Console 与 Easysearch 容器环境
https://infinilabs.cn/blog/202 ... cker/

2、使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
https://infinilabs.cn/blog/202 ... pose/

3、上线3周:告警减少70%!AI巡检分级报告实战(一)
https://mp.weixin.qq.com/s/3s0Tvw8q5y6IpDNl3Y_7VA

4、开源: 和您的SQL聊聊天,自然语言SQL数据库查询系统
https://mp.weixin.qq.com/s/cfJ9jCQTc2zQPTav1tlyOA

5、为什么在 Kibana 中分配自定义数据视图 ID 很重要
https://mp.weixin.qq.com/s/USARC_EUXk_t-vrOCJDMxg

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、搭建持久化的 INFINI Console 与 Easysearch 容器环境
https://infinilabs.cn/blog/202 ... cker/

2、使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
https://infinilabs.cn/blog/202 ... pose/

3、上线3周:告警减少70%!AI巡检分级报告实战(一)
https://mp.weixin.qq.com/s/3s0Tvw8q5y6IpDNl3Y_7VA

4、开源: 和您的SQL聊聊天,自然语言SQL数据库查询系统
https://mp.weixin.qq.com/s/cfJ9jCQTc2zQPTav1tlyOA

5、为什么在 Kibana 中分配自定义数据视图 ID 很重要
https://mp.weixin.qq.com/s/USARC_EUXk_t-vrOCJDMxg

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2059期 (2025-06-20)

1、从“技术债务”到“数据自由”:一次 12TB 的 Elasticsearch 索引优化实战
https://mp.weixin.qq.com/s/fYISSlm1eRQW5p20PKJuMA

2、向量数据库--基于图的近似最近邻搜索
https://mp.weixin.qq.com/s/vDIwUq7xYG_d3KolI6Nhig

3、搭建持久化的 INFINI Console 与 Easysearch 容器环境
https://infinilabs.cn/blog/202 ... cker/

4、百度垂搜数据管理系统弹性调度优化实践
https://my.oschina.net/u/4939618/blog/18627327

5、私有知识库 Coco AI 实战(二):摄入 MongoDB 数据
https://infinilabs.cn/blog/202 ... on-2/

编辑:Fred
更多资讯:http://news.searchkit.cn
继续阅读 »
1、从“技术债务”到“数据自由”:一次 12TB 的 Elasticsearch 索引优化实战
https://mp.weixin.qq.com/s/fYISSlm1eRQW5p20PKJuMA

2、向量数据库--基于图的近似最近邻搜索
https://mp.weixin.qq.com/s/vDIwUq7xYG_d3KolI6Nhig

3、搭建持久化的 INFINI Console 与 Easysearch 容器环境
https://infinilabs.cn/blog/202 ... cker/

4、百度垂搜数据管理系统弹性调度优化实践
https://my.oschina.net/u/4939618/blog/18627327

5、私有知识库 Coco AI 实战(二):摄入 MongoDB 数据
https://infinilabs.cn/blog/202 ... on-2/

编辑:Fred
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2058期 (2025-06-19)

1.不仅仅是模型分片:LWS 和分布式推理|KC25
https://mp.weixin.qq.com/s/C1wv_54hOnh3Q5yoq2NXSg
2.数据库老司机勇闯现代前端大观园
https://mp.weixin.qq.com/s/51dKs7wR6WCNiNWX5j_gWg
3.使用 Higress AI 网关代理 vLLM 推理服务
https://mp.weixin.qq.com/s/DsJ4aY1K6mEnwR_Ms8QvMA
4.AI Infra 和传统 Infra 断代了吗?聊聊 Infra “三大难题”,以及其中的关联
https://mp.weixin.qq.com/s/o8snj-WUbhfY1kcdPDHnPg

编辑:Se7en
更多资讯:http://news.searchkit.cn
继续阅读 »
1.不仅仅是模型分片:LWS 和分布式推理|KC25
https://mp.weixin.qq.com/s/C1wv_54hOnh3Q5yoq2NXSg
2.数据库老司机勇闯现代前端大观园
https://mp.weixin.qq.com/s/51dKs7wR6WCNiNWX5j_gWg
3.使用 Higress AI 网关代理 vLLM 推理服务
https://mp.weixin.qq.com/s/DsJ4aY1K6mEnwR_Ms8QvMA
4.AI Infra 和传统 Infra 断代了吗?聊聊 Infra “三大难题”,以及其中的关联
https://mp.weixin.qq.com/s/o8snj-WUbhfY1kcdPDHnPg

编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第2057期 (2025-06-18)

1.ELK 的替代品:Opentelemetry + OpenSearch
https://mp.weixin.qq.com/s/ykExR8uTBW74Z6xBv1c3LA

2.向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘
https://blog.csdn.net/UbuntuTo ... 92893

3.MCP(Model Context Protocol,模型上下文协议)的当前状态
https://blog.csdn.net/UbuntuTo ... 23169

4.Elasticsearch 合成原字段:Synthetic _source
https://blog.csdn.net/UbuntuTo ... 18147


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.ELK 的替代品:Opentelemetry + OpenSearch
https://mp.weixin.qq.com/s/ykExR8uTBW74Z6xBv1c3LA

2.向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘
https://blog.csdn.net/UbuntuTo ... 92893

3.MCP(Model Context Protocol,模型上下文协议)的当前状态
https://blog.csdn.net/UbuntuTo ... 23169

4.Elasticsearch 合成原字段:Synthetic _source
https://blog.csdn.net/UbuntuTo ... 18147


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »