ElasticSearch+Kinaba 在Windows下的安装
由于最近工作的需要,需要进行大量的数据检索和日志分析,用到Elasticsearch(以下简称ES)全文检索工具,下面就把我在使用过程中的一些问题和大家分享一下吧。如有什么写的不对的地方,希望得到大家的批评和指正,谢谢!
一、什么是ES?
简单来说,ES就是一个基于Lucene(其实就是一个Jar包),基于RESTful web接口,支持分布式多用户能力的全文搜索引擎。那么什么是全文检索呢?举个栗子,假如在一个数据库里面有1个亿的数据量,你需要从中搜索你所需要的某几条数据,那么通常做法就是你需要扫描一亿次才能匹配到你所需要的数据,也就是说每次你都需要进行扫描所有的数据,那效率可想而知了。但是基于lucene的搜索方式就不同,首先他会把你搜索的关键词,建立倒排索引 ,假设一个亿的数据量拆分之后,或许只有5千万个词组,那么在倒排索引中就会有5千万行,也就是说,当你在检索数据时候,或许你在执行搜索的时候只需要搜索一次或者5千万次,就能把所需要的数据搜索出来,而这一过程也就可称为全文检索。
二、为什么要用ES?
举个栗子:做开发的都知道,一般数据我们都会存储在数据库里面,假如说你存入的某个字段,是一个文本类型的,在你执行搜索的时候,数据库他是不会帮你进行拆分的,你必须的搜什么就去匹配什么,比如你搜索变”形金”,你就不可能搜索出”变形金刚”,,我们引入ES的话,进过词组的拆分后,搜索将会更接近于自己所期望的结果。
三、初学ES需了解的几个概念?
3、Near Realtime(NRT):近实时性,也就是说从写入数据到数据可以被搜索到有一个小延迟(大概1秒左右)。
4、Cluster:集群,包含多个节点,集群名称,默认是elasticsearch,一个elasticsearch 就是一个节点。,
5、Node:节点,集群中的一个节点,一个节点也可以是一个集群,多节点默认启动时,会加入一个名称为elasticsearch的集群。
6、shard:分片,目的是作为分布式存储,当单台机器数据量达到上限时,es会将index的数据自动负载均很分配到各个分片,减少压力,提升性能。
7、replica:副本,避免数据丢失,没个shard都可以创建一个或者多个副本,在shard挂掉时,继续提供服务。
在index建立时。默认5个primary shard(主分片),1个replica shard(副本)。
四、数据库和ES的简单对比
五、ES在Windows下的安装和启动
1、准备工作:
1)因为ES是java写的,依赖于jdk,所以首先安装jdk,去oracle官网下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;自行安装,
2) 配置环境变量
计算机→属性→高级系统设置→高级→环境变量
(2)在path下增加变量值:%JAVA_HOME%\bin;
(3)新建变量名CLASSPATH 变量值为: .;%JAVA_HOME%\lib
(4)完成以上三步之后检查是否安装完成
windows+r 键。输出cmd候车后,运行命令 java
java -version
出现如上结果时,说明jdk安装成功。
2、jdk安装完毕后,下面去ES官网下载所需要的安装包,https://www.elastic.co/downloads/past-releases;
选择所需的软件和对应的版本号,在这里我一ES6.0.0作为例子,
这是我下载后并解压后ES的根目录,
这是解压后kinaba的根目录,
了解以上的话,可以直接启动es了,
启动方式,进入es的bin目录双击elasticsearch.bat的文件
同理进入kinaba的bin目录,双击kibana.bat
当看到started是说明es正常启动了。
当看到kibana的状态为green是说明启动正常。
此时,我们在浏览器中地址栏中输入如下路径:localhost:9200
出现如下信息则证明启动成功。
在浏览器输入如下地址:localhost:5601
证明完全启动成功。
好了,以上就是在windows下es和kibana的简单安装使用。有些粗糙,欢迎各位小伙伴批评指教。
后记:别人问我,你写这个有意思吗?看看网上一搜索一大堆人家写的都比你好,你又是何必呢?
对于这个问题,我个人觉得吧,确实人家写的的确很好,但是有一句话是这样说的,别人写的再好也是别人的,自己写的再不堪,那也是自己写的,难道不是吗?只要自己尽力写了,写的好不好再说吧!
祝各位小伙伴能天天有个好心情。
下片预告:在windows下,基于kibana对es进行简单的增删改查操作。欢迎大家多多指教。