前言
最近要用ES,所以就简单的学习一下
应用场景
1.站内搜索
- 主要是网页信息量比较大的网站会有站内全文检索这一功能,方便用户快速检索信息
2.Nosql
- ES在读写性能优于MongoDB,同时支持地理位置查询
3.日志分析
- 日志分析由实时日志分析平台ELK(Elasticsearch,Logsash和Kibana)
- ELK能够对日志进行集中收集,存储,搜索,分析,监控,以及可视化
核心概念
1.集群
- 一个或者多个ES的服务器组织在一起就是集群
- 集群名字默认为"elasticserach"在配置文件中指定
- 具有相同集群名字的节点才会组成一个集群
2.节点
- 一个节点就是集群中的一个服务器,它参与存储,索引和搜索
3.索引
- 一个索引就是一个拥有几份相似特征的文档的集合
- 索引的数据结构是倒排索引
4.类型
- 在一个索引中,你可以定义或者多种类型,一个类型是索引的一个逻辑上的分类或者分区
- 通常,会为具有一组共同字段的文档定义一个类型
5.文档
- 一个文档是一个可被索引的基础信息单元
6.分片
- 一个索引可以存储超出单个节点硬件限制的数据,比如一个10亿的文档索引占据1TB磁盘,我们单个节点无法完全存储,或者单个节点处理搜索请求响应太慢,ES就将这个索引划分多份,这些份就叫分片
- 当你创建一个索引时可以指定分片的数量,每个分片是一个功能完整的“索引”,这个“索引”可以放到任何一个节点上
分片的重要性
- (1) 允许你水平分割/扩展你的内容容量
- (2) 允许你在分片上进行分布式的,并行的操作,进而提高性能和吞吐量
7.副本
- 创建分片的一份拷贝这些拷贝就是副本
重要性
- (1)保证高可用性,复制分片不与主分片放在同一节点(很重要)
- (2)扩展搜索量/吞吐量,搜索可以在所有副本并行运行
与RDMS对比
RDMS | ES |
---|---|
数据库(database) | 索引(index) |
表(table) | 类型(type) |
行(row) | 文档(document) |
列(column) | 字段(field) |
表结构(Schema) | 映射(Mapping) |
索引 | 全文索引 |
SQL | 查询DSL |
SELECT * FROM tablename | GET http://… |
UPDATE table SET | PUT http://… |
DELETE | DELETE http://… |