Coco-AI 接入自定义数据源

之前使用 Hugo Connector 接入和 hexo 和任意 Markdown。现在,官方已经开放了对任意数据源的原生支持,关键在于引入了一个用于接收文档数据的 API 接口:

image-20250417194847718


阅读更多

Easysearch 中 PUT 和 POST 更新索引的区别及常见错误解析

Easysearch 中,PUTPOST 都用于创建或更新文档,但它们的使用方式和行为有所不同。理解这些区别并正确使用,可以避免常见的错误,并确保数据操作符合预期。


1. PUT 用于创建或完全替换文档

PUT 方法要求必须提供文档 ID,用于创建或完全替换已有文档。如果指定的文档 ID 不存在,则 PUT 会创建一个新文档;如果该 ID 已存在,则会完全覆盖原有数据,不会保留任何旧字段。

示例

1
2
3
4
PUT my_index/_doc/1
{
"myindex": 123
}

执行效果

  • 如果 ID 1 存在,原有文档会被完全覆盖,只保留 myindex 字段。
  • 如果 ID 1 不存在,则创建一个新文档。

常见错误

1
PUT my_index/_doc
阅读更多

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库,进行索引的快照(Snapshot)备份和恢复。同时,Easysearch 内置了 S3 插件,无需额外安装。以下是完整的配置和操作步骤。


1. 在 AWS S3 上创建存储桶

  1. 登录 AWS 控制台,进入 S3 服务。
  2. 创建一个新存储桶(例如 easysearch-backups)。
  3. 启用版本控制(可选,但推荐)。
  4. 权限配置:确保 IAM 角色具有访问 S3 的权限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::s3-bucket-name"]
},
{
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::s3-bucket-name/*"]
}
]
}

2. 在 Console 上注册 S3 作为快照存储库

阅读更多

Docker-Compose部署 EasySearch 异常问题排查

近期将原本运行在 macOS 上的 EasySearch、Console 和 Coco-server 等服务迁移至群晖 NAS 平台。在迁移过程中遇到了 EasySearch 容器无法正常启动或运行中意外终止的问题。本文记录了这些问题的具体表现及解决方案,旨在为后续类似部署提供参考。

基础部署配置

以下是官方推荐的 docker-compose 配置文件:
地址如下:

阅读更多

Easysearch 服务昨天还好好的,为什么今天突然访问不了了?

在使用 Easyearch 搭建本地或云端搜索服务时,难免会遇到服务偶发性或持续性无法访问的问题。本文将从服务状态、端口监听、网络配置、安全组等五个维度,系统梳理排查思路,帮助大家快速定位并解决访问失败的原因。


🚢 一、Docker 部署场景下的排查方法

如果你是通过官方的 Docker Compose 部署 EasySearch,一般不会出现太大问题。但如果你像我一样在群晖或 NAS 上做过自定义配置,以下通用排查方法可以帮助你快速定位问题:

阅读更多

Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

众所周知,原生 Elasticsearch 默认开启的是 HTTP 明文接口,并且不开启任何身份认证或传输加密。若想启用 TLS/SSL 加密及账号密码验证,通常需要配置繁琐的安全模块。

而 Easysearch 在此基础上做了极大的简化,通过官方提供的 initialize.sh 脚本,一键完成初始化即可自动生成证书、配置 HTTPS,并启用密码认证。

当然,对于本地开发或临时测试场景,我们也可能希望关闭 HTTPS 与认证,直接通过 HTTP 调试服务。本文将从配置文件出发,逐步讲解如何根据不同需求配置 Easysearch 的安全策略、通信协议与外网访问权限。


🛠 一、初始化输出与默认账号密码

执行以下初始化命令后:

1
bin/initialize.sh

终端及 initialize.log 文件中将输出初始的访问方式和管理员账号密码,例如:

1
curl -ku admin:160824cab0b02193226e https://localhost:9200

默认情况下,Easysearch 启用了 HTTPS 通信及密码认证。


阅读更多

从认证到透传:用 Nginx 为 Easysearch 构建一体化认证网关

在构建本地或云端搜索引擎系统时,EasySearch 凭借其轻量、高性能、易部署等优势,逐渐成为众多开发者和技术爱好者的首选。但在实际部署过程中,如何借助 Nginx 为 EasySearch 提供高效、稳定且安全的访问入口,尤其是在身份认证方面,仍然是一个关键技术环节。

本教程将围绕 Basic Auth 认证机制展开,系统讲解如何通过 Nginx 实现安全防护、认证信息透传等常见配置场景,帮助你在多种实际部署环境中快速搭建可靠的访问控制机制。

无论你是在搭建家庭 NAS 服务,还是在企业环境中集成搜索引擎系统,本教程都能为你提供一套可落地、可复用的 Nginx 安全认证解决方案。。

下面是我的 Nginx 配置文件示例。我们通过 Docker 启动 Nginx 容器,并将本地编写好的配置文件挂载到容器中,从而实现自定义的反向代理和认证逻辑:

1
2
3
4
5
docker run -d \
--name my-nginx \
-p 80:80 \
-v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf \
nginx

default.conf配置如下:

阅读更多

MySQL数据实时接入Easysearch,零代码迁移全流程

随着业务对数据搜索与分析能力的要求不断提高,越来越多的团队开始将关系型数据库中的数据迁移至搜索引擎中。
本篇文章将分享如何通过AWS DMS,实现 MySQL 数据无缝迁移到EasySearch,并打通实时同步链路的全过程。

注意:AWS DMS 原生仅支持托管的 OpenSearch 和 Elasticsearch,不直接支持 EasySearch。本文将介绍如何通过一些配置技巧,优雅地解决这个问题。


一、准备 MySQL 源数据库

1. 创建数据库与数据表

首先,我们需要准备好待迁移的 MySQL 数据库。我这里使用的是DBeaver工具,当然你也可以选择更专业的 MySQL Workbench 或 DataGrip。

新建数据库时,选择utf8mb4编码,库名命名为source(后续 DMS 迁移任务中会用到)。

新建数据库

接下来创建数据表并定义字段。图形化工具可以避免手写 DDL,对非 DBA 用户非常友好。

阅读更多

Easysearch 索引关闭与重开全攻略:open close 操作、批量处理及防误操作配置

在 Easysearch(兼容 Elasticsearch 的搜索引擎)中,索引是存储和查询的基本单元。默认情况下,索引是处于 open 状态的,可以正常写入和搜索。当你暂时不使用某些索引,但又不想删除它们时,可以通过 close 操作来关闭索引,从而释放部分内存资源。


📊 查看索引状态

使用以下命令可以查看当前集群中所有索引的状态:

1
GET _cat/indices?v

创建一个索引并插入数据:

1
2
3
4
POST abc/_doc
{
"a": 1
}
阅读更多

Easysearch 实战指南:修改索引主分片的三种方式(split shrink reindex

在 Easysearch(兼容 Elasticsearch)的架构中,索引的主分片数(index.number_of_shards)一旦创建就无法直接修改。这给实际使用带来挑战:

  • 设得太少,查询/写入瓶颈出现;
  • 设得太多,资源浪费、集群不稳;
  • 想变更结构,却发现配置是“写死”的。

本文将带你深入了解三种常见但本质不同的索引重构方式:splitshrinkreindex,教你如何选择合适方案、安全操作,并解释为什么split + shrink 无法取代 reindex


📌 一张图概览三种方式

方法 是否重建索引 可否原名使用 改分片数限制 是否保留数据 是否改结构(mapping/settings) 常见用途
split ✅ 新建索引 ❌ 不支持 只能 × 倍数(如 1→2→4) ✅ 是 ❌ 否 提升写入并发/读性能
shrink ✅ 新建索引 ❌ 不支持 只能 ÷ 因数(如 4→2→1) ✅ 是 ❌ 否 合并历史数据分片
reindex ✅ 新建索引 ✅ 支持(先删) 任意 ✅ 是 ✅ 支持 自定义结构/分片/升级

🔧 一、split:将分片数量倍增(如 1 → 2 → 4)

适用于: 提升并发能力、增加查询/写入并行度。

阅读更多