概念
Elasticsearch是一个分布式的文档(document)存储引擎。它可以实时存储并检索复杂数据结构——序列化的JSON文档 ,它能快速的批量查询出数据。在Elasticsearch中,每一个字段的数据都是默认被索引的,所以ES的查询速度很快。
ES使用场景
1 它提供了强大的搜索功能。
2 可以搜索日志或者交易数据,用来分析商业趋势、搜集日志、分析系统瓶颈或者运行发展等等
3 可以提供预警功能(持续的查询分析某个数据,如果超过一定的值,就进行警告)
4 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
先了解几个核心概念
先了解ES的几个核心理念,有利于后期的学习:
1 近实时
ElasticSearch并不是一个标准的数据库,它不像MongoDB,它侧重于对存储的数据进行搜索。因此要注意到它 不是 实时读写 的,这也就意味着,刚刚存储的数据,并不能马上查询到。
当然这里还要区分查询的方式,ES也有数据的查询以及搜索,这里的近实时强调的是搜索....
2 集群
一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。在产品环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行测试/开发也是不错的。
3 节点
跟集群的概念差不多,ES启动时会设置这个节点的名字,一个节点也就是一个ES得服务器。
默认会自动生成一个名字,这个名字在后续的集群管理中还是很有作用的,因此如果想要手动的管理或者查看一些集群的信息,最好是自定义一下节点的名字。
4 索引
在Elasticsearch中存储数据的行为就叫做索引(indexing)
可以看一下ES和传统关系型数据库的对比:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
5 类型
类型可以理解成一个索引的逻辑分区,用于标识不同的文档字段信息的集合。但是由于ES还是以索引为粗粒度的单位,因此一个索引下的所有的类型,都存放在一个索引下。这也就导致不同类型相同字段名字的字段会存在类型定义冲突的问题。
在2.0之前的版本,是可以插入但是不能搜索;在2.0之后的版本直接做了插入检查,禁止字段类型冲突。
6 文档
文档是存储数据信息的基本单元,使用json来表示。
7 分片与备份(shards & replicas)
在ElasticSearch中,索引会备份成分片,每个分片是独立的lucene索引,可以完成搜索分析存储等工作。
总结:
通过本篇文章先弄清楚ES是干什么的,为什么要使用ES,弄清楚ES的几个核心概念,有利于后期的学习。后期更新更多ES的学习文章,赶紧关注小编一起学习ES吧。