搜索引擎 Elasticsearch
Elasticsearch 是什么?
Elasticsearch™ 是一款基于 Lucene 的搜索引擎,不但稳定、可靠、快速,同时具备良好的水平扩展能力
特性
- 功能丰富,且开箱即用
- 横向可扩展性
- 分片机制更好地解决热点问题
- 多副本有效保证了高可用
- 精确的熔断器机制
- 社区庞大,生态完善
主要概念
Cluster 集群
在一个分布式系统里面,可以通过多个 Elasticsearch 节点组成一个集群。集群中会动态选举出一个主节点,保证了 Elasticsearch 集群不存在单点故障
在同一子网内,只需要将进程设置为相同的集群名,Elasticsearch 就会把这些集群名相同的进程自动组成一个集群。集群中各节点间的通讯和数据负载均衡,全部都由 Elasticsearch 自动管理
Node 节点
每一个 Elasticsearch 进程称为一个 Node 节点。在测试环境中,可以在一台服务器上运行多个 Elasticsearch 进程;但生产环境中,则建议每台服务器只运行一个 Elasticsearch 进程
Index 索引
Elasticsearch 中的索引是文档数据存储的地方,相当于是传统关系数据库中的 DataBase 概念。更多逻辑上的对应关系,如下表所示:
Relational DB | HBase | Elasticsearch | 说明 |
---|---|---|---|
Database | NameSpace | Template | 一组索引的模板配置 |
Table | Table | Index | 索引 |
Row | RowKey | Document | 文档,和 Lucene 概念一致 |
Column + Value | Cell | Field | 如果将文档理解为 JSON,那么 Field 就是字段和值 |
- | - | Term | 检索的基本单位,相当于是文本中的一个词 |
- | - | Token | Term 内容、类型,以及 Term 在文本中的起始及偏移 |