Elasticsearch是由Elastic开发的一种源代码可用的搜索引擎。它基于Apache Lucene,提供分布式、支持多租户的全文搜索引擎,具有HTTP Web界面和无模式的JSON文档。官方客户端支持Java、C#、PHP、Python、Ruby等语言。根据DB-Engines排名,Elasticsearch是最受欢迎的企业搜索引擎。它常用于向量搜索,并为人工智能和机器学习领域的应用提供支持。
Elasticsearch是分布式的,使用存储在索引中的JSON文档,索引被分为分片,每个分片可以有分布在集群节点上的副本。它支持全文搜索、分面搜索、实时搜索和多租户。该软件与Logstash、Kibana和Beats一起开发,作为Elastic Stack(前身为ELK Stack)的一部分。
历史
Shay Banon在2004年创建了Elasticsearch的前身Compass。在开发Compass的第三个版本时,他得出结论,需要完全重写,以构建一个可扩展的分布式搜索解决方案,使用JSON over HTTP作为通用接口。他于2010年2月发布了Elasticsearch的第一个版本。
Elastic NV成立于2012年,旨在围绕Elasticsearch及相关软件提供商业服务和产品。2014年6月,该公司在由New Enterprise Associates领投的C轮融资中筹集了7000万美元,Benchmark Capital和Index Ventures也参与了投资,使总融资额达到1.04亿美元。
2015年3月,该公司将名称从Elasticsearch改为Elastic,并通过收购Found推出了托管云服务,后来被称为Elastic Cloud。2017年11月,Elastic收购了搜索初创公司Swiftype,其技术成为Elastic App Search和Elastic Site Search的基础。Elastic还与Google建立了合作伙伴关系,在Google Cloud Platform上提供Elastic Cloud,并与阿里巴巴合作,在阿里云上提供Elasticsearch和Kibana。
2018年6月,Elastic申请首次公开募股,估值估计在15亿至30亿美元之间。2018年10月5日,Elastic在纽约证券交易所上市。
许可变更
2021年1月,Elastic宣布从7.11版本开始,Elasticsearch和Kibana将从Apache License 2.0重新授权为Server Side Public License和Elastic License的双重许可,这两种许可均不被认定为开源许可。Elastic表示,这一变更是对Amazon Web Services(AWS)在未与Elastic进行充分合作的情况下将Elasticsearch和Kibana作为服务提供的回应。批评者指出,Elastic此前曾承诺永远不会更改Elasticsearch、Kibana、Beats和Logstash的Apache 2.0许可,并预测此举将损害生态系统。
AWS的回应是宣布分叉这些项目,以在Apache License 2.0下继续开发。Elasticsearch生态系统的其他成员,包括Logz.io、CrateDB和Aiven,也承诺支持分叉。由于与“Elasticsearch”名称可能存在商标冲突,AWS于2021年4月将其分叉项目更名为OpenSearch。
2024年8月,Elastic从8.16.0版本开始为Elasticsearch增加了GNU Affero General Public License作为第三个许可选项。这使得该软件在两种源代码可用选项之外,再次以自由和开源许可提供。
架构与特性
Elasticsearch基于Apache Lucene构建,通过JSON和Java API暴露Lucene的功能。文档存储在索引中,索引被分为主分片;每个分片可以有零个或多个分布在集群节点上的副本。路由和再平衡自动处理。一旦创建了索引,主分片的数量就不能更改。
该引擎支持分面搜索和渗透(percolation),这是一种前瞻性搜索形式,其中存储的查询与传入的文档匹配,而不是相反。网关模块处理长期索引持久化,允许在节点故障后恢复索引。实时GET请求使Elasticsearch可用作NoSQL数据存储,尽管它不支持分布式事务。
2019年5月,Elastic免费提供了Elastic Stack的核心安全功能,包括用于加密通信的TLS、文件和本地领域认证,以及用于集群API和索引的基于角色的访问控制。相应的源代码在Elastic License下可用。Elasticsearch还提供SIEM和机器学习功能,作为其商业产品的一部分。
官方客户端库维护了Java、C#(.NET)、PHP、Python和Ruby等语言。
Elastic Stack
Elasticsearch与Logstash(数据收集和日志解析引擎)、Kibana(分析和可视化平台)以及Beats(轻量级数据采集器)一起开发。这四个产品旨在作为Elastic Stack一起使用。该组合以前被称为ELK Stack,是“Elasticsearch、Logstash和Kibana”的首字母缩写。
参见
- 信息抽取
- Kibana
- Grafana
- 信息检索库列表
- OpenSearch(软件)- 由AWS维护的Elasticsearch开源分叉
- Graylog