elasticsearch 入门及windows下安装启动
主要内容概览:
- 什么是elasticsearch
- es的适用场景和特点
- es基本概念
- windows下安装、启动及kibana 安装启动
PS:如果只想知道怎么安装启动,请看第4块的内容,尽管这样,我还是建议你看下es的基本概念[即第3大块内容],这对你以后的操作很重要。
1.什么是elasticsearch
这里引用官方的原话来解答,“Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎”。好了,其实我并不关心它是什么,我关心的更多的是,它能做什么,我使用它主要是为了解决mysql全文索引的问题,诸如:select * from t_goods where goods_name like ‘%电%’;语句用不到索引,全表扫描当数据量大时很慢的问题,但es貌似很强大,“Elasticsearch 不仅仅只是全文搜索,我们还将介绍结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等”—嗯。。。。这也是官方文档原话。
这里贴出es 官方文档地址:https://www.elastic.co/guide/cn/elasticsearch/guide/current/preface.html
错略看了下,es等搜索引擎底层使用的是”倒排索引”。
关于倒排索引,有兴趣的可以去google下,这里贴出我维基百科结果:
2.es的适用场景和特点
场景:
站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)
电商网站,检索商品
用户行为日志(点击,浏览,收藏,评论)+社交网络数据,数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)
特点:
(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司
(2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)
(3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂
(4)数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能
3.es基本概念
(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级
(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常
(3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群
(4)索引:索引,是具有某种相似特征的文档的集合。例如,客户数据索引,产品目录索引,以及订单数据索引。索引由名称(必须全部为小写)标识,此名称用于在对文档进行索引、搜索、更新和删除操作时使用。在单个集群中,您可以根据需要定义任意数量的索引。
(5)Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。
(6)Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。值得注意的是,尽管文档本质上是存放在索引中,但实际上是被索引/分配到索引中的一个类型中。
PS:在这里可以将index[索引],type[类型],document(文档)分别理解为为数据库的数据库,数据表,记录的话,容易理解点。
(7)shard:分片,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。
(8)replica:副本,任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
总而言之,每个索引可以分为多个分片。每个索引也可以被复制零次(意味着没有副本)或多次。一旦复制,每个索引将具有主分片(复制的原始分片)和副分片(主分片的副本)。可以在创建索引时根据索引定义碎片和副本的数量。创建索引后,可以随时动态更改副本数,但不能更改事后的分片数。
4.windows下安装、启动
首先配置java环境变量,这个就不多说了,自行百度安装配置java环境。
下载elasticsearch ,下载地址:https://www.elastic.co/cn/downloads/elasticsearch#ga-release
kibana 下载地址:https://www.elastic.co/downloads/kibana
我这里下载的是5.1.1,并已装好ik中文分词插件
链接:https://pan.baidu.com/s/1UFHIKDV-eA4r9ye1vvBQ2g 密码:j37u
解压elasticsearch-rtf-master.zip后打开cmd窗口切换到bin目录下:
输入elasticsearch ,启动,然后在chrome(或其它浏览器)地址栏中输入localhost:9200,
看到类似下图,表示启动成功了
接下来,安装启动kibana
下载解压kibana-5.1.1-windows-x86.zip后打开cmd窗口切换到bin目录下,输入kibana.bat,然后在浏览器地址栏中输入:localhost:5601
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。
PS:下载kibana 的版本一定要和elasticsearch 相同,否则会出现运行不了等错误。