Elasticsearch 是一个分布式搜索与分析引擎。最常见的使用场景是全文检索、日志检索、聚合分析和面向搜索的应用后端。
它的底层建立在 Lucene 之上,但 Elasticsearch 做的不是简单封装,而是把索引、分片、副本、集群路由和 REST 接口统一起来,让搜索系统从单机库变成了可部署、可扩展的服务。
和传统数据库相比,Elasticsearch 的优势不在事务,而在搜索。它擅长处理分词、相关性评分、倒排索引、多字段检索和近实时聚合。也正因为如此,它经常与数据库配合使用,而不是直接替代数据库。
很多团队第一次接触 Elasticsearch,都是因为“数据库的模糊查询太慢了”。但真正用起来之后会发现,它还引入了另一套问题:mapping 如何设计、写入与刷新如何权衡、分片数怎样设置、查询 DSL 是否复杂、集群是否容易失衡。
所以理解 Elasticsearch,不该只停留在“它能搜得快”。更准确地说,它是一个围绕搜索问题重新设计的数据组织与查询系统。