Elasticsearch安装
1.ElasticSearch
Elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口(还有其他语言的api接口)。
关于elasticsearch的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得lucene实在太复杂了,就开发了一个封装了lucene的开源项目,compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得compass不够,就写了elasticsearch,让lucene变成分布式的系统。
Elasticsearch是一个实时分布式搜索和分析引擎。它用于全文搜索、结构化搜索、分析。
全文检索:将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。
结构化检索:我想搜索商品分类为日化用品的商品都有哪些,select * from products where category_id='日化用品'。
数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些。
1.1 安装包下载
1)Elasticsearch官网: https://www.elastic.co/products/elasticsearch
1.2 安装Elasticsearch(单节点Linux环境)
1)解压elasticsearch-5.6.1.tar.gz到/opt/module目录下
[root@master software]# tar -zxvf elasticsearch-5.6.1.tar.gz -C /opt/module/
2)在/opt/module/elasticsearch-5.6.1路径下创建data和logs文件夹
[root@master elasticsearch-5.6.1]# mkdir data
[root@master elasticsearch-5.6.1]# mkdir logs
3)修改配置文件/opt/module/elasticsearch-5.2.2/config/elasticsearch.yml
[root@master config]# pwd
/opt/module/elasticsearch-5.6.1/config
[root@master config]# vi elasticsearch.yml
# ---------------------------------- Cluster ------------------------------------- cluster.name: es-cluster # ------------------------------------ Node -------------------------------------- node.name: node1 # ----------------------------------- Paths --------------------------------------- path.data: /opt/module/elasticsearch-5.6.1/data path.logs: /opt/module/elasticsearch-5.6.1/logs # ----------------------------------- Memory ----------------------------------- bootstrap.memory_lock: false bootstrap.system_call_filter: false # ---------------------------------- Network ------------------------------------ network.host: 192.168.96.11 # --------------------------------- Discovery ------------------------------------ discovery.zen.ping.unicast.hosts: ["master"] http.cors.enabled: true |
(1)cluster.name
如果要配置集群需要两个节点上的elasticsearch配置的cluster.name相同,都启动可以自动组成集群,这里如果不改cluster.name则默认是cluster.name=es-cluster,
(2)nodename随意取但是集群内的各节点不能相同
(3)修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格
4)配置linux系统环境
(1)编辑limits.conf 添加类似如下内容
[root@master elasticsearch-5.6.1]# vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
(2)进入limits.d目录下修改配置文件。
[root@master elasticsearch-5.6.1]# vi /etc/security/limits.d/20-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
(3)修改配置sysctl.conf
[root@master elasticsearch-5.6.1]# vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
[root@master elasticsearch-5.6.1]# sysctl -p
然后,重新启动elasticsearch,即可启动成功。
5)Linux中新建用户
(1)使用root用户操作如下命令:
useradd elsearch -----------创建用户
passwd elsearch -----------为用户设置密码
vim /etc/sudoers -----------为用户赋予sudo权限
添加 elsearch ALL=(ALL) ALL
(2) 修改文件夹及其子文件夹属主命令
chown -R elsearch:elsearch elasticsearch-6.1.1/
修改后即可以使用elsearch操作此文件夹内容
6)启动elasticsearch
[elsearch@master elasticsearch-5.6.1]$ bin/elasticsearch
7)测试elasticsearch
[elsearch@master elasticsearch-5.6.1]$ curl http://master:9200 curl -XGET 'localhost:9200/_cat/health?v&pretty' { |
8)安装elasticsearch-head.crx插件
第一种安装方法:
(1)Google浏览器:打开浏览器,进入“更多工具”——>“扩展程序”,将插件拖入即可完成安装
(2)360浏览器:打开浏览器,双击elasticsearch-head.crx插件即可完成安装
(3)使用插件查看节点状态
第二种安装方法:
下载插件:https://github.com/mobz/elasticsearch-head
nodejs官网下载安装包:https://nodejs.org/dist/
node-v6.9.2-linux-x64.tar.xz
拷贝
安装nodejs:
解压
配置环境变量:
export NODE_HOME=/usr/local/node-v6.9.2-linux-x64 export PATH=$PATH:$NODE_HOME/bin
查看node和npm版本:
node -v
npm -v
解压head插件到/opt/module目录下:
unzip elasticsearch-head-master.zip
查看当前head插件目录下有无node_modules/grunt目录:
没有:执行命令创建:npm install grunt --save --registry=https://registry.npm.taobao.org
安装head插件:
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装grunt:
npm install -g grunt-cli --registry=https://registry.npm.taobao.org
编辑Gruntfile.js
vim Gruntfile.js
文件93行添加
hostname:'0.0.0.0'
检查head根目录下是否存在base文件夹
没有:将 _site下的base文件夹及其内容复制到head根目录下
mkdir base
cp base/* ../base/
启动grunt server:
grunt server -d
如果提示grunt的模块没有安装:
Local Npm module “grunt-contrib-clean” not found. Is it installed?
Local Npm module “grunt-contrib-concat” not found. Is it installed?
Local Npm module “grunt-contrib-watch” not found. Is it installed?
Local Npm module “grunt-contrib-connect” not found. Is it installed?
Local Npm module “grunt-contrib-copy” not found. Is it installed?
Local Npm module “grunt-contrib-jasmine” not found. Is it installed?
执行以下命令:
npm install grunt-contrib-clean -registry=https://registry.npm.taobao.org
npm install grunt-contrib-concat -registry=https://registry.npm.taobao.org
npm install grunt-contrib-watch -registry=https://registry.npm.taobao.org
npm install grunt-contrib-connect -registry=https://registry.npm.taobao.org
npm install grunt-contrib-copy -registry=https://registry.npm.taobao.org
npm install grunt-contrib-jasmine -registry=https://registry.npm.taobao.org
最后一个模块可能安装不成功,但是不影响使用。
浏览器访问head插件:
9)停止集群
kill -9 进程号
2.3 安装Elasticsearch(多节点集群Linux环境)
1)分发Elasticsearch安装包至slave1和slave2
[elsearch@master module]$ xsync elasticsearch-5.6.1/
2)修改master配置信息
[elsearch@master config]$ vi elasticsearch.yml
添加如下信息:
node.master: true
node.data: true
3)修改slave1配置信息
(1)修改Elasticsearch配置信息
[elsearch@master config]$ vi elasticsearch.yml
node.name: node2
node.master: false
node.data: true
network.host: 192.168.96.12
(2)修改Linux相关配置信息(同master)
4)修改slave2配置信息
(1)修改Elasticsearch配置信息
[elsearch@slave1 config]$ vi elasticsearch.yml
node.name: node3
node.master: false
node.data: true
network.host: 192.168.96.13
(2)修改Linux相关配置信息(同master)
5)分别启动三台节点的Elasticsearch
6)使用插件查看集群状态