Elasticsearch

Elasticsearch

分布式搜索与分析引擎,提供 REST 查询、聚合统计与向量检索

核心功能

Elasticsearch 是基于 Lucene 的分布式搜索与分析引擎,数据以 JSON 文档写入索引,用 REST 接口的 Query DSL 或 ES|QL 查询,可做全文检索、聚合统计与向量检索,集群按分片与副本扩展。2024 年 8 月起源码在 AGPLv3、ELv2、SSPL 下提供。

功能亮点

查询语法

用 JSON 描述 match、bool、filter 等条件并组合

分片横向扩展

索引按分片切分并配副本,增加节点即可扩容并提升集群可用性

检索兼聚合

一次 _search 可同时返回命中文档与 terms 等聚合结果

三重开源许可

源码同时以 AGPLv3、ELv2、SSPL 提供,自建可用 Basic 级

适用场景

• 站内搜索与商品检索的分面筛选
• 日志与指标的集中检索和聚合分析
• 安全事件、审计数据的调查式检索
• 用 dense_vector 做语义与混合搜索

安装配置

bash
本地快速体验(官方脚本,用 Docker 拉起 Elasticsearch + Kibana):
curl -fsSL https://elastic.co/start-local | sh

Docker 单节点:
docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:9.4.4
docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:9.4.4

Debian / Ubuntu(APT 仓库):
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-9.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo systemctl start elasticsearch.service

使用方法

bash
创建索引:
PUT /books

批量写入文档(NDJSON):
POST /_bulk
{ "index" : { "_index" : "books" } }
{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
{ "index" : { "_index" : "books" } }
{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}

全文检索:
GET books/_search
{
  "query": {
    "match": {
      "name": "brave"
    }
  }
}

Docker 部署后验证连通(需先取出容器内的 CA 证书):
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标Elasticsearch
价格免费
开源
上手难度专家

相关工具

优点

  • 全文检索、聚合统计与向量检索在同一集群完成,不必另配一套分析系统
  • 索引按分片和副本切分,增加节点即可横向扩容并保持高可用
  • REST + Query DSL 通用性强,官方客户端覆盖 Java、Python、JS、Go 等语言
  • 自建可用免费的 Basic 级别,官方同时提供 Docker 镜像与 APT / YUM 仓库

缺点

  • 源码许可为 AGPLv3、ELv2 或 SSPL,均非 Apache 2.0,二次分发前要先核对条款
  • JVM 服务且吃内存,官方 Docker 示例建议至少 1GB,用机器学习能力要 6GB 以上
  • 首次启动默认开启 TLS 与鉴权,本地调试还要复制 http_ca.crt 并带 elastic 密码访问
  • Query DSL 嵌套层级深,bool、nested 与聚合组合起来的查询体积明显偏大
  • 生产集群需要规划分片数、堆内存与滚动升级,运维负担高于轻量搜索引擎