做为一名半道出家的程序员,学习新的知识老是喜欢先从Hello World开始,以为这样能够比较简单的,首先给我直观上体验下新技术的特色。最近由于一个项目需求,决定开始入手Elasticsearch开始进行数据查询,分析工做。做为传统关系型数据库储备知识约为0,大数据新技术储备知识等于0的我来讲,很想先找来一个Hello World体验下,惋惜网上找了半天,没有找到相关详细的资料(或者至少对我而言,有些教程仍是不够详细,具体,何况时至今日,Elasticsearch已经发布到5.2.1版本了,网上不少教程仍是基于以前的2.X甚至更古老的版本)所以,决定求人不如求己,本身开始来搞一篇Step By Step,做为本身测试过程的一个记录吧。linux
1、 系统环境程序员
硬件:一台2年前攒的性能尚可的PC。web
软件:Vmware + Centos 7 x64shell
其实在5.2.1版本对windows的支持应该已经不错了,至少从文件来看,有专门的bat和exe文件。但从经验来看,凡是开源的东东,尤为这种开源后移植到win平台的东东,有可能的话仍是老老实实用linux系统吧。况且官方的各类示例基本也是linux下,curl这种小工具更是任意linux系统的标配。最后还有一个缘由:win系统b格不够高。若是未来真的要向领导演示这个系统,让领导看着平台原来和他一直用来写文档,玩扫雷的是一个系统,多掉价。数据库
2、 安装json
1 首先固然是安装Elasticsearch 5.2.1了。没想到,刚开始就掉入一个坑,https://www.elastic.co/downloads/elasticsearch中看到有rpm包,想着直接在系统yum install该多么帅。想都没想就按照官方教程windows
来作,然而首先,龟速的下载速度已经让我抓狂,喝了n杯茶以后,悲催的发现,居然安装出错,因为本文写于系统已经初步搭建完成,因此当时报错信息忘记截图了。用万能的google+baidu各类搜索,试了诸如切换用户权限等各类方法后,错误仍然,遂放弃。仍是 老老实实用迅雷下载离线安装包。解压文件夹elasticsearch-5.2.1到当前用户的主文件夹(就是centos当前用户在桌面上打开终端,默认的那个路径)。而后直接在shell定位到bin目录运行centos
./elasticsearch
成功了,是的,就这么简单,以前被yum给坑死了。然而,这仅仅是安装 的第一步,由于基本上如今用这个的都得装几个必备插件吧,固然这中间还有n个坑。浏览器
2 安装X-PACK插件。嗯,首先找到这个名字就是一个坑,由于网上搜索相关材料,仍是一窝蜂的告诉你,要安装HEAD插件,而后你就能够很Happy的去web gui体验了。要是你按照这些教程一行行的输入相关安装head的命令,就等着报错吧,由于官方已经明确提 示了,从elasticsearch5.0版本之后,以前经典的head、marvel这些都集成到了x-pack插件包里面。其实要是英语够好,根本不用网上找各类资料,直接去看官网的readme,绝对是最权威,最靠谱的第一手资料。
app
按照官方提示
sudo bin/elasticsearch-plugin install x-pack
而后就是使人抓狂的等待过程,实在是太太太慢了,果断采用B方案,即离线安装。首先迅雷下载 https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.1.zip,而后不用解压,不用解压,不用解压,重要的事情说三遍,将该文件放到一个比较方便的 目录,如我就放在tmp目录下。而后运行
./elasticsearch-plugin install file:///tmp/x-pack-5.2.1.zip
秒OK。有洁癖的别急着删除tmp下的这个文件,由于kibana和logstash也须要这样离线安装x-pack。(这样看来,个人安装顺序貌似有误,应该先安装那两个,最后安装x-pack才是。没办法,谁让我是搜索head插件开始的呢)
3 安装 kibana。
没有吸收教训的我,这里一开始仍然妄图经过yum install的方法来安装,然而龟速很快就让我缴械投降了。果断直接下载包https://artifacts.elastic.co/downloads/kibana/kibana-5.2.1-linux-x86_64.tar.gz,解压完以后直接运行
./kibana
是秒OK。
4 安装logstash。彻底参照3。
5 注册x-pack。
此时若是打开浏览器http://localhost:5601登陆(默认的用户名是elastic密码是changeme),会发现没几天就会过时,这是由于x-pack只是针对开发测试环境免费,但须要去注册激活一个一年的key。根据页面上注册的提示链接,很容易就能够注册下载到一个json 格式的激活文件,有效期一年。(我是用十分钟邮箱去注册的,我会乱说?:))。下载到的json文件是比较长的字符,为了方便我改成key.json。而后根据官方连接的提示,在json当前目录的shell中输入
curl -XPUT 'http://localhost:9200/_license' -d @key.json
然而很不幸,提示以下
{"acknowledged":false,"license_status":"valid","acknowledge":{"message":"This license update requires acknowledgement. To acknowledge the license, please read the following messages and ......
继续google,发如今http://stackoverflow.com/questions/36135815/marvel-basic-licence-installation的解决方法,即在http://localhost:9200/_license后面添加acknowledge=true,即
curl -XPUT 'http://localhost:9200/_license?acknowledge=true' -d @key.json
一切顺利,最好重启下服务,再登录页面就会发现提示是一年后过时了。
6 参照2,在 kibana和logstash安装x-pack。
至此,Elasticsearch和一些经常使用的基本组件应该安装完成了。下面,应该就能够开始导入、查询数据了。
BTW,虽然程序已经能够跑起来了,可是仔细查看ElasticSearch的输出日志,发现有两处报警:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案:第一个问题,
sudo gedit /etc/security/limits.conf
添加以下两行
启动es的用户名 soft nofile 65536
启动es的用户名 hard nofile 65536
保存重启后,确认下结果为65536
ulimit -Hn
第二个问题,
sudo gedit /etc/sysctl.conf
而后添加
vm.max_map_count=262144
保存重启后,确认下结果修改为功
sysctl vm.max_map_count
最后,设置下Xms和Xmx,最好是物理内存的一半。
gedit ElasticSearch目录\config\jvm.options
设置为
-Xms4g -Xmx4g (我给虚拟机分配了8g内存)
保存重启便可。