1. ElasticSearch的介绍

(1)ElasticSearch的趣味历史

  Shay Banon认为自己参与Lucene完全是一种偶然,当年他还是一个待业工程师,跟随自己的新婚妻子来到伦敦,妻子想在伦敦学习做一名厨师,而自己则想为妻子开发一个方便搜索菜谱的应用,所以才接触到Lucene。直接使用Lucene构建搜索有很多问题,包含大量重复性的工作,所以Shay便在Lucene的基础上不断地进行抽象,让Java程序嵌入搜索变得更容易,经过一段时间的打磨便诞生了他的第一个开源作品“Compass”,中文即“指南针”的意思。之后,Shay找到了一份面对高性能分布式开发环境的新工作,在工作中他渐渐发现越来越需要一个易用的、高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。

(2)ElasticSearch的概述

  ElasticSearch是一款基于Apache Lucene构建的开源搜索引擎,它采用Java编写并使用Lucene构建索引、提供搜索功能,ElasticSearch的目标是让全文搜索变得简单,开发者可以通过它简单明了的RestFul API轻松地实现搜索功能,而不必去面对Lucene的复杂性。ES能够轻松的进行大规模的横向扩展,以支撑PB级的结构化和非结构化海量数据的处理。

(3)ElasticSearch与solr的比较

接口:  solr类似于webserver结构  elasticsearch是rest风格访问接口 分布式:  solr:solrCloud solr4.x支持  elasticsearch:为分布式而生 支持风格:  solr:json、xml  elasticsearch:json

(4)ElasticSearch与MySQL的比较

2. ElasticSearch的单机版安装

(1)单机版安装

前置条件 下载地:https://github.com/elastic/elasticsearch 注意:在安装集群之前,保证有jdk并且是1.7以及以上。 不能以root用户启动ES,否则: 安装步骤 ①解压:

[hadoop hadoop03@~]$ tar zxvf elasticsearch-6.2.0.tar.gz -C /application/ 

②修改配置文件

#/application/elasticsearch-6.2.0/config/elasticsearch.yml cluster.name: zzy-application #集群的名称 node.name: node-1 #节点名称 path.data: /home/hadoop/data/elasticsearch-data #数据存储目录 path.logs: /home/hadoop/logs/elasticsearch-log #日志存储目录 network.host: 192.168.191.130 #绑定主机 

③版本兼容问题

requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER 

表示:centos6.x的内核太低,需要centos7或者升级centos6.x对应的内核至3.5以上。这里选择升级centos6.x对应的内核。 #相关操作:

[hadoop hadoop03@~]$more /etc/issue和uname -a #查看linux内核信息 

#升级内核 [hadoop hadoop03@~]$sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
如果出现下图所示: 无法在服务器使用curl命令访问https域名,原因是nss版本有点旧了: 可以使用:

[hadoop hadoop03@~]$yum -y update nss 

#安装内核

sudo yum --enablerepo=elrepo-kernel ×××tall kernel-lt -y 

#编辑grub.conf文件,修改Grub引导顺序 #如果出现以下错误:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 

#limits.conf
sudo vim /etc/security/limits.conf 添加如下内容:

* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 

并注释: 如果还有错误:

max number of threads [1024] for user [bigdata] is too low, increase to at least [4096] 

#修改配置文件90-nproc.conf
sudo vim /etc/security/limits.d/90-nproc.conf #接下来还会有错误

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 

#修改配置文件/etc/sysctl.conf 并且生效:sudo sysctl -p #最后一个错误:

system call filters failed to ×××tall; check the logs and fix your configuration or disable system call filters at your own risk 

这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。 #修改elasticsearch配置文件 vim /application/elasticsearch-6.2.0/config/elasticsearch.yml

#在Memory下面 bootstrap.memory_lock: false bootstrap.system_call_filter: false 

④重启电脑

⑤启动ES [hadoop hadoop03@~]$/application/elasticsearch-6.2.0/bin/elasticsearch -d 最终在http://hadoop03:9200的web界面中出现: 表示安装成功~!!!!!

3. ElasticSearch的集群安装

这里需要注意,如果是安装集群的话,如果你的Linux每一台都是出现以上的问题,那么每一台电脑都要升级内核,一点要保持所有的节点都能成功启动单机的ES。   如何你的节点能够成功的安装单机的ES,那么集群的安装非常简单:只要节点同属于一个局域网同一网段,而且集群名称相同,ES就会自动发现其他节点。 ①将单机的版的ES发送的各个节点上:

[hadoop hadoop03@application]$scp -r elasticsearch-6.2.0 hadoop01:$PWD [hadoop hadoop03@application]$scp -r elasticsearch-6.2.0 hadoop02:$PWD 

②修改配置文件: #节点一 hadoop01: cluster.name: zzy-application http.port: 9200 network.host: 0.0.0.0 #节点二 hadoop 02: cluster.name: zzy-application http.port: 9200 network.host: 0.0.0.0 transport.tcp.port: 19300 #节点三: cluster.name: bigdata http.port: 9200 network.host: 0.0.0.0 transport.tcp.port: 29300 ③配置完成之后,启动ES即可: 可以通过ES插件elasticsearch-head查看集群信息: 这里elasticsearch-head是一个Google的插件,下载需要×××,这里小编直接给大家提供一个,直接放在Google浏览器的扩展程序中即可。 下载地址:http://down.51cto.com/data/2458080 注意:这里是通过一台机器不同的端口实现的集群,如果是多台机器需要在每一个节点的配置文件中加入:

discovery.zen.ping.unicast.hosts: [ "nodeIP:9300","nodeIP:9300" ] 

这是因为ES集群是自动发现机制,这里我们提供一个发现的列表,只要clusterName一样,并且在同一网络下,集群名称相同的ES节点就会自动组成一个集群。 这种依赖性的发现,比较靠谱,当然如果要集群扩展就比较慢了。

4. Elasticsearch Kibana

  kibana 本质上是elasticsearch web客户端,是一个分析和可视化elasticsearch平台,可通过kibana搜索、查看和与存储在elasticsearch的索引进行交互。可以很方便的执行先进的数据分析和可视化多种格式的数据,如图表、表格、地图等。   .1 简单部署: ①下载 URL:http://www.elastic.co/downloads/kibana 需要特别注意的就是kibana和ES之间的版本匹配问题。这里使用的是kibana-6.2.0-linux-x86_64.tar ② 配置: 解压:[hadoop@hadoop03 ~]$ tar zxvf kibana-6.2.0-linux-x86_64.tar.gz -C /application/ 配置文件:[hadoop@hadoop03 config]$ vim kibana.yml 注意:由于ES启动时不能通过root用户,所以logs这个目录需要是启动ES的用户创建: #后台启动(在bin下):

nohup bin/kibana >logs/kibana.log 2>&1 & 

③ 测试 访问部署Kibana机器的5601端口出现这个页面,表示部署成功:   .2 简单部署   Discover页面: 交互式的浏览数据。可以访问所匹配的索引模式的每个索引的每个文档。可以提交搜索查询,过滤搜索结果和查看文档数据。还可以搜索查询匹配的文档数据和字段值的统计数据。还可以选定时间以及刷新频率。   Visualize页面:设计数据可视化。可以保存这些可视化,单独或合并成仪表盘。可视化可以基于以下数据源类型1.一个新的交互式搜索 2. 一个保存的搜索 3. 现有的可视化。   Dashboard页面:自由排列已保存的可视化,保存这个仪表盘并可以分享或者重载。   **settings页面:**要使用kibana,得先告诉kibana要搜索的elasticsearch索引是哪些,可以配置一个或更多索引。