Elasticsearch
分布式全文搜索和分析引擎。
Elasticsearch 是构建于 Apache Lucene 之上的分布式 RESTful 搜索和分析引擎。它为各种规模的公司驱动搜索栏、日志聚合(ELK 栈)、产品目录、安全分析和可观测性工具。Pier 部署适用于开发、测试和小到中型生产工作负载的单节点配置。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 Elasticsearch。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。
什么是 Elasticsearch?
Elasticsearch 是世界上部署最广泛的全文搜索和分析引擎。它在 2010 年作为 Apache Lucene 的分布式包装器起步,已发展为现代日志/可观测性栈(ELK + EFK 中的”E”)、安全分析(SIEM)和跨各行业搜索驱动应用的基础。
它的秘诀:将 JSON 文档存储在分片中,为关键字搜索构建倒排索引,为语义搜索 构建密集向量索引,并通过 JSON REST API 公开所有内容。聚合将其变为实时分析 引擎。自动完成、模糊匹配、多语言分析器和同义词使其成为许多电商网站和 SaaS 产品的搜索栏引擎。
Pier 如何部署它
Pier 使用官方 docker.elastic.co/elasticsearch/elasticsearch 镜像(当前
latest 根据发布日期为 8.x 或 9.x)。默认端口是内部 9200/tcp。数据卷
挂载到 /usr/share/elasticsearch/data。
自动生成强 elastic 用户密码。在 Elasticsearch 8+ 中默认启用安全
(HTTPS + 基本认证);你可以通过 xpack.security.enabled=false env
覆盖为内部开发使用禁用。
对于可视化,部署 elasticsearch-kibana 模板,捆绑 Elasticsearch + Kibana
与正确的 env 连接。对于带 3+ 节点的生产集群,你需要手动编排 — Pier 的
单容器模板针对开发和小型生产。
何时不要使用 Elasticsearch
对于规模化的日志重度可观测性 — ClickHouse 存储日志便宜 10×。对于纯产品
目录搜索 — Meilisearch 或 Typesense 更轻易于操作。对于小型部署 — 带
tsvector 和 GIN 索引的 Postgres 全文搜索通常足够。Elasticsearch 在你需要
搜索 + 分析 + 聚合 + 向量搜索在一个引擎时大放异彩。
核心功能
强化版全文搜索
倒排索引、BM25 排名、模糊匹配、自动完成(边缘 n-gram)、同义词、多语言分析器。用 JSON DSL 或 Lucene 语法查询。
设计上分布式
数据模型内置分片(水平分区)和副本(冗余)。跨节点线性扩展;100+ 节点的集群是常规。
聚合与分析
GROUP BY、百分位、直方图、地理空间聚合、管道聚合 — Elasticsearch 在 JSON 文档上加倍作为实时分析引擎。
ES|QL 查询语言
ES|QL(8.11+)添加了类 SQL 的管道语法用于临时探索。对新手比 Query DSL 门槛低。
向量搜索
自 8.0 起原生密集向量字段和 HNSW 索引。RAG 和语义搜索工作负载 — 与经典 BM25 在单一混合查询中并存。
生态系统
Kibana 用于可视化、Logstash 用于摄取管道、Beats 用于轻量级 shipper、Java/JS/Python/Go/Ruby/PHP/.NET/Rust 的官方客户端。
应用场景
应用和日志搜索
ELK 中的"E"。Beats / Fluent Bit / Vector 从你的应用发送日志;Elasticsearch 索引;Kibana 可视化。数千组织的默认可观测性栈。
产品目录搜索
分面导航、错字容忍、同义词、加权 boost、推荐。电商网站的搜索栏。
安全分析(SIEM)
Elastic Security 将 Elasticsearch 用作 SIEM 骨干。检测规则、行为分析、威胁狩猎。
向量 + 词汇混合搜索
结合 BM25 关键字匹配和密集向量相似度。企业文档 RAG 的两全其美。
实时业务指标
对 JSON 形状事件数据的聚合提供亚秒分析 — 按地区销售、按设备会话等。
代码示例
curl -X POST "elasticsearch:9200/products/_doc" -H 'Content-Type: application/json' -d '{
"name": "iPhone 17 Pro",
"category": "phones",
"price": 1299,
"in_stock": true,
"tags": ["apple", "5g", "flagship"]
}' curl -X POST "elasticsearch:9200/products/_search" -H 'Content-Type: application/json' -d '{
"query": {
"bool": {
"must": [{ "match": { "name": "iphone" } }],
"filter": [{ "term": { "in_stock": true } }, { "range": { "price": { "lte": 1500 } } }]
}
},
"aggs": {
"categories": { "terms": { "field": "category" } }
}
}' FROM logs-*
| WHERE @timestamp > NOW() - 24 HOURS
| STATS count = COUNT(*) BY service.name
| SORT count DESC
| LIMIT 20 curl -X POST "elasticsearch:9200/products/_search" -d '{
"knn": {
"field": "embedding",
"query_vector": [0.1, 0.2, ...],
"k": 10,
"num_candidates": 100
}
}' 对比
| vs OpenSearch | OpenSearch 是 Elasticsearch 的 Apache 2.0 分支(7.10 后许可证变更),由 AWS + 社区维护。API 高度兼容。如果你想要严格 OSS 选 OpenSearch;想要最新功能选 Elasticsearch。 |
| vs ClickHouse | ClickHouse 存储结构化日志数据便宜 10×,聚合更快。Elastic 在全文搜索和临时 JSON 查询上胜出。许多可观测性栈将日志从 Elastic 迁移到 ClickHouse,但保留 Elastic 用于搜索。 |
| vs Algolia / Typesense | Algolia 是托管 SaaS — 快速、精致、昂贵。Typesense 是 OSS 且更轻。Elasticsearch 更重但覆盖纯全文之外的分析 + 日志搜索。 |
| vs Meilisearch | Meilisearch 是专注的现代全文引擎 — 比 Elastic 更简单,更易操作。产品目录搜索选 Meili;"一切搜索 + 分析"选 Elastic。 |
常见问题
许可证情况?
内存要求?
单节点还是集群?
安全 / 认证?
如何连接 Kibana?
Indices vs Data Streams?
备份策略?
相关服务
在你的 VPS 上部署
Elasticsearch 是构建于 Apache Lucene 之上的分布式 RESTful 搜索和分析引擎。它为各种规模的公司驱动搜索栏、日志聚合(ELK 栈)、产品目录、安全分析和可观测性工具。Pier 部署适用于开发、测试和小到中型生产工作负载的单节点配置。
部署此服务 →