1.Elasticsearch介绍
Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的Elasticsearch.
数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能.
Elasticsearch是我见过的最简单的数据分析处理的工具,单机运行的话下载后解压一下简单配置后就能用,分布式集群也就稍微多一点配置。
2.Elasticsearch功能
(1)分布式的搜索引擎和数据分析引擎
(2)全文检索,结构化检索,数据分析(不支持关联查询)
(3)对海量数据进行近实时的处理
3.Elasticsearch功能
(1)Near Realtime(NRT):近实时。包括写入数据到数据能被查询到(秒级),基于es执行的搜索分析达到秒级。
(2)Cluster:集群。包含多个节点,最简单的集群就是一个节点构成的集群。
(3)Node:节点。集群中的一个节点,每个节点有一个默认的名称。
(4)Document&field:文档,es中最小的数据单元。document可以理解为mysql中的一行数据,field可以理解为mysql中一行数据的某个字段。
(5)Index:索引,包含一堆有相似结构的文档数据。index可以理解为mysql的库,和传统数据库中的索引不是一个概念。
(6)Type:类型,每个索引里都可以有一个或多个type。type可以理解为mysql里的表。注意从ES6.x开始,type的概念就淡化了,在es6.x里面,type默认为_doc,也就是一个index里面就只有一个type,名字是_doc。从ES7.x开始,就取消了type。
(7)shard:又叫做primary shard。单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。这样在es上执行搜索和分析的性能得到更好的提升。primary shard是建立索引时设置的,不能修改,默认5个。
(8)replica:又叫做replica shard。任何一个服务器随时可能故障或宕机,此时primary shard可能就会丢失,因此可以为每个primary shard创建多个replica副本。replica可以在primary shard故障时提供备用服务,保证数据不丢失。replica shard可以随时修改数量,默认是1个。
默认情况下每个索引10个shard,5个primary shard,同时就会有5个replica shard。通常情况下把primary shard称为shard,replica shard称为replic。增减节点时,shard会自动在nodes中负载均衡,shard的个数不会变,但是数据会做负载均衡。shard的数量在创建索引的时候就固定了,replica的数量可以随时修改(增加replic可以提高集群吞吐量,性能更好)。shard不能和自己的replica放在同一个节点上(否则节点宕机,shard和replica都丢失,起不到容错的作用),但是可以和其他索引的shard的replica放在同一个节点上。
针对shard和replic举个例子,搭建一个单节点的es集群。创建一个索引,然后分配3个shard,那么这个索引默认会有3个replic。3个shard会分配到一个节点上,但是另外3个replic无法分配。集群可以正常工作,不过集群一旦宕机,集群就不可用。
对比一下传统的数据库就能大致了解es了。
Elasticsearch mysql数据库
Document 行
Type 表
Index 库
4.Elasticsearch安装
去官网下载Elasticsearch和kibana,我下载的都是6.6.0版本的。这里说下Elasticsearch,logstash,kibana就是常说的ELK。logstash和flume很像,用来做日志数据采集的。kibana用来做可视化分析的。
1.安装java, version在1.8以上。
2.解压Elasticsearch,进入bin目录,直接启动elasticsearch.sh即可。(windows也一样,启动elasticsearch.bat即可,如果是单纯学习elasticsearch建议下载windows版本的,因为不用开启虚拟机。)
3.访问http://localhost:9200/?pretty,页面上会打印如下信息,证明elasticsearch启动成功。
{
"name" : "1q8X7U4",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "iKjNXfpBTRCiFgOOZV7ROg",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
4.解压kibana,进入bin目录,直接启动kibana.sh即可。(window启动kibana.bat即可)
5.访问http://localhost:5601/app/kibana,能正常访问说明kibana安装成功。
6.选择kibana左侧的Dev tools,在这里写query dsl能帮助我们更好学习es,你可以将kibana理解为es的可视化界面操作,当然他的功能不仅仅于此。
7.在Dev Tools的console里面输入GET _cluster/health,并点击右边的三角号执行。界面右边会显示es集群的信息。