产品概述

概述 #

介绍 #

INFINI Easysearch 是一款分布式 AI 搜索型数据库,支持结构化和非结构化的数据检索、全文检索、向量检索、空间地理位置信息检索、组合查询、多语种支持、语义分析和聚合分析等多种功能。

Easysearch 采用商用友好协议,企业可自由进行内部部署、二次开发和商业化服务,无需担忧协议合规风险。基于 Lucene 构建,Easysearch 紧跟 Lucene 最新版本持续迭代更新,兼容 ES API 与生态工具,为企业提供轻量、安全、自主可控的搜索平台。

核心特性 #

特性说明
轻量易用安装包约 50MB,开箱即用
内置安全默认启用 TLS 加密与身份认证,支持 LDAP
全文检索基于 Lucene,支持 BM25 评分、IK 中文分词、同义词
向量检索kNN 近似最近邻搜索,支持 AI embedding
聚合分析桶聚合、指标聚合、管道聚合
SQL 支持使用 SQL 语法查询索引,支持 JDBC
ES 兼容兼容 ES API、客户端与生态工具
信创适配支持龙芯、鲲鹏、飞腾、麒麟、统信等国产平台

架构总览 #

                    ┌─────────────────────────────────┐
                    │        客户端 / 应用程序          │
                    │  (REST API, Java, Python, SQL)   │
                    └──────────────┬──────────────────┘
                                   │ HTTPS (9200)
                    ┌──────────────▼──────────────────┐
                    │      INFINI Gateway (可选)       │
                    │   负载均衡 · 限流 · 查询审计      │
                    └──────────────┬──────────────────┘
                                   │
          ┌────────────────────────┼────────────────────────┐
          │                        │                        │
  ┌───────▼───────┐      ┌────────▼────────┐     ┌────────▼────────┐
  │    Node 1     │      │     Node 2      │     │     Node 3      │
  │  master+data  │◄────►│   master+data   │◄───►│   master+data   │
  │               │ 9300 │                 │9300 │                 │
  │ ┌───┐ ┌───┐  │      │ ┌───┐ ┌───┐    │     │ ┌───┐ ┌───┐    │
  │ │S0 │ │S1R│  │      │ │S1 │ │S2R│    │     │ │S2 │ │S0R│    │
  │ └───┘ └───┘  │      │ └───┘ └───┘    │     │ └───┘ └───┘    │
  └───────────────┘      └────────────────┘     └────────────────┘
      S = 主分片  SR = 副本分片
  • 节点 (Node):一个 Easysearch 实例,承载数据和处理请求
  • 集群 (Cluster):一组协同工作的节点
  • 索引 (Index):文档的逻辑集合,类比关系数据库的表
  • 分片 (Shard):索引的物理分区,分布在不同节点上
  • 副本 (Replica):分片的冗余拷贝,提供高可用和读扩展

商用友好协议 #

Easysearch 是商业软件,采用商用友好协议,专为企业商业化需求设计:

权利说明
内部使用可在任何规模的生产环境中自由部署和使用
二次开发允许深度定制和功能扩展,衍生成果完全归企业所有
商业化服务可基于 Easysearch 构建 SaaS、托管服务或商业产品,无需公开源代码
部署自由支持私有云、公有云、混合云及任何物理环境
无传染性不会因为提供服务而被迫公开技术栈实现

基本概念 #

集群和节点 #

Easysearch 采用分布式设计,意味着您可以与集群中的任何节点进行交互。每个集群都是一个或多个节点的集合。

  • 小集群(3 节点)适合中小数据量
  • 大集群可以扩展到数百个节点,按角色分离职责
  • 有关节点角色的设置,请参阅 搭建集群

索引与文档 #

Easysearch 将数据组织成索引。每个索引都是 JSON 文档的集合:

{
  "title": "INFINI Labs",
  "release_date": "2021-12-03"
}

将文档添加到索引时,Easysearch 会添加元数据(_id_index_version 等)。

索引还包含:

  • 映射 (Mapping):定义字段类型(text、keyword、integer、date 等)
  • 设置 (Settings):分片数量、副本数、刷新间隔等

主分片和副本分片 #

  • 主分片:承载数据的原始分区,索引创建后数量不可更改
  • 副本分片:主分片的冗余拷贝,提供故障转移和读取扩展
  • 经验法则:单个分片大小保持在 10~50 GB

REST API #

使用 HTTP 请求与 Easysearch 交互:

# 写入文档
curl -ku admin:password -X PUT "https://localhost:9200/my-index/_doc/1" \
  -H 'Content-Type: application/json' \
  -d '{"title": "Hello", "content": "Easysearch 入门"}'

# 搜索
curl -ku admin:password "https://localhost:9200/my-index/_search?q=Hello"

# 删除
curl -ku admin:password -X DELETE "https://localhost:9200/my-index/_doc/1"

详见 RESTful 与 Query DSL

下一步 #

  • 快速开始:15 分钟完成安装、连接与查询
  • 基础理论:倒排索引、分布式原理、评分模型
  • 功能手册:全文搜索、聚合、Mapping、SQL 等完整功能