elasticSearch

官网https://www.elastic.co/cn/

linux上安装:
1.安装jdk
2.安装elasticSearch

上传压缩包解压进入,注意不能用root账户操作elastic
添加分组 groupadd esgroup(组名)
添加用户 useradd esuser(用户名) -g esgrouop(指定用户组) -p 123456(指定密码)
切换为新用户su esuser,同时需要用root用户给当前用户授权可以操作es目录
chown -R esuser:esgroup elasticsearch-6.2.4
后台运行:解压目录下的/bin/下执行./elasticsearch -d
测试连接:curl 127.0.0.1:9200
实现远程访问:
需要对config/elasticsearch.yml进行   配置network.host为es服务器的ip地址和port
会出现3个错误
问题一:max file descriptors [4096] for elasticsearch process is too low, 
increase to at least [65536]
原因:普通用户执行问题
解决:切换到root用户,编辑/etc/security/limits.conf
 //文件最后加入 esuser就是上面添加的用户名
esuser soft nofile 65536
esuser hard nofile 65536
esuser soft nproc 4096
esuser hard nproc 4096
问题二:max number of threads [1024] for user [elk] is too low, increase to at least [2048]
原因:普通用户执行操作数低
vim /etc/security/limits.d/20-nproc.conf 
修改为 esuser soft nproc 4096
问题三:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:操作系统的vm.max_map_count参数设置太小导致的
解决:切换超级用户,编辑/etc/sysctl.conf
     添加 vm.max_map_count=655360
     保存退出,执行 sysctl -p
  再次启动如果还是失败需要重启电脑或者虚拟机再重启

安装Head插件

Head是elasticsearch的集群管理工具,可以用于数据的浏览和查询

(1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们要使用它,必须先安装git,通过git获取elasticsearch-head

1.查看系统是否已经安装git
git --version
2.CentOS7 yum 安装git
yum install -y git

(2)运行elasticsearch-head会用到grunt,而grunt需要npm包管理器,所以nodejs是必须要安装的

通过安装包安装,可以使用
先下载安装包到 /usr/local路径下
wget https://npm.taobao.org/mirrors/node/v8.0.0/node-v8.0.0-linux-x64.tar.xz
下载完成后解压
tar -xvf  node-v8.0.0-linux-x64.tar.xz
重命名为node
mv node-v8.1.4-linux-x64 node
配置环境变量
vim /etc/profile
在文件的最后添加
#set for nodejs  
export NODE_HOME=/usr/local/node  
export PATH=$NODE_HOME/bin:$PATH
保存退出后执行更新命令
source /etc/profile
如果不生效,重启系统就可以 
检测node和npm是否安装成功
node -v
npm -v

(3)elasticsearch5.0之后,elasticsearch-head不做为插件放在其plugins目录下了。

使用git拷贝elasticsearch-head到本地
cd /usr/local/
 git clone git://github.com/mobz/elasticsearch-head.git

(4)安装elasticsearch-head依赖包
//安装grunt
[root@localhost local]# npm install -g grunt-cli

[root@localhost _site]# cd /usr/local/elasticsearch-head/

使用淘宝的npm镜像cnpm
因为下载都是国外服务器很慢会掉线,我们需要使用淘宝的npm镜像cnpm。
执行命令:
npm install -g cnpm --registry=https://registry.npm.taobao.org
启用淘宝的npm镜像cnpm,注意:启用后当我们要输入npm命令时,就需要输入cnpm
这个过程很慢,慢慢等吧。

//安装依赖包
[root@localhost elasticsearch-head]# cnpm install

如果有这个报错信息,找到报错的根源:
at Timeout._onTimeout (/nodejs/lib/node_modules/cnpm/node_modules/urllib/lib/urllib.js:849:15)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
然后找到报错根源:/nodejs/lib/node_modules/cnpm/node_modules/urllib/lib/urllib.js
修改掉文件里面的常量 TIMEOUT、TIMEOUTS 的 5s 为 10s

(5)修改Gruntfile.js

[root@localhost _site]# cd /usr/local/elasticsearch-head/
[root@localhost elasticsearch-head]# vi Gruntfile.js
在connect-->server-->options下面添加:hostname:’*’,允许所有IP可以访问

(6)修改elasticsearch-head默认连接地址

[root@localhost elasticsearch-head]# cd /usr/local/elasticsearch-head/_site/
[root@localhost _site]# vi app.js
将this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || 
"http://localhost:9200";中的localhost修改成你es的服务器地址

(7)配置elasticsearch允许跨域访问

打开elasticsearch的配置文件elasticsearch.yml,在文件末尾追加下面两行代码即可:
http.cors.enabled: true
http.cors.allow-origin: "*"

(8)打开9100端口

[root@localhost elasticsearch-head]# firewall-cmd --zone=public --add-port=9100/tcp --permanent
重启防火墙
[root@localhost elasticsearch-head]# firewall-cmd --reload

(9)启动elasticsearch

(10)启动elasticsearch-head

[root@localhost _site]# cd /usr/local/elasticsearch-head/
[root@localhost elasticsearch-head]# node_modules/grunt/bin/grunt server

(11)访问elasticsearch-head

ip地址:9100

安装Kibana ——-比较常用的es客户端

Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据

(1)下载Kibana

https://www.elastic.co/downloads/kibana

(2)解压缩,并把解压后的目录命名为kibana

(3)编辑kibana配置文件kibana下的config下的kibana.yml

将server.host,elasticsearch.url修改成所在服务器的ip地址

(4)开启5601端口

firewall-cmd --permanent --zone=public --add-port=5601/tcp
firewall-cmd –-reload

(5)启动Kibana

[root@localhost /]# /usr/local/kibana/bin/kibana
浏览器访问:http://ip:5601

安装中文分词器

(1)下载中文分词器

https://github.com/medcl/elasticsearch-analysis-ik
下载elasticsearch-analysis-ik-master.zip

(2)解压elasticsearch-analysis-ik-master.zip

unzip elasticsearch-analysis-ik-master.zip

(3)进入elasticsearch-analysis-ik-master,编译源码

mvn clean install -Dmaven.test.skip=true 
因为使用maven编译所以要先装maven
 centos 7 安装maven
下载地址
http://maven.apache.org/download.cgi
版本 apache-maven-3.3.9 -bin.tar.gz
tar -xvf apache-maven-3.3.9-bin.tar.gz 
mv apache-maven-3.3.9 /usr/local/apache-maven
文件存放好之后,设置环境变量,打开etc/profile,在文件中加入下边的代码:
写入环境变量
vi /etc/profile 
最后一行加入
这个前提是安装了java1.8
export JAVA_HOME=/usr/local/jdk1.8
export MAVEN_HOME=/usr/local/apache-maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH
再执行
source /etc/profile

(4)在es的plugins文件夹下创建目录ik

(5)将编译后生成的elasticsearch-analysis-ik-版本.zip移动到ik下,并解压

(6)解压后的内容移动到ik目录下
多了一层目录所有要把解压后的文件移出到ik下.

单机版es推荐创建索引设置
因为只有一台服务器所以没有备用,挂了数据全部丢失重新导入数据
PUT /lib/
{

“settings”:{
“index”:{
“number_of_shards”: 1,
“number_of_replicas”: 0
}
}
}
集群版es配置需要修改配置文件(最少两台,最好3台)
#集群的名称
cluster.name: my-application
#节点名称,不能重复
node.name: node-1
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂 了就会重新选举master
node.master: true
#本机的es服务地址
network.host: 192.168.88.100
#设置对外服务的http端口,默认为9200
http.port: 9200

设置节点间交互的tcp端口,默认是9300

transport.tcp.port: 9300
#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: [“192.168.88.100:9300”,“192.168.88.111:9300”]
#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: “*”
#允许该节点存储数据(默认开启)
node.data: true
#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap. 什么时候会swapping呢?一般普通硬盘每秒大概90次,实际业务每秒2千多次了就可能出现内存交换到磁盘。这里需要额外设置下系统配置文件 需要切换到root用户:(以下1.2.3.不在此文件内操作
1,修改/etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536
  • soft nproc 32000
  • hard nproc 32000
  • hard memlock unlimited
  • soft memlock unlimited
    2,修改/etc/systemd/system.conf
    修改下面几项
    DefaultLimitNOFILE=65536
    DefaultLimitNPROC=32000
    DefaultLimitMEMLOCK=infinity
    3,最后 /bin/systemctl daemon-reload 执行下即可
    )
    bootstrap.memory_lock: true
    #如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 -为了避免脑裂, 集群节点数最少为 半数+1
    #意思是当节点1是master的时候如果访问量大可能会出现无反应的情况,集群以为他死了就把节点2升级为master,结果过了一段时间后节点1正常了此时就会出现两个master,所以一般需要3台服务器,设置更换master的时候需要两台以上确定.如果是两台服务器把下面这行注释掉
    discovery.zen.minimum_master_nodes: 2
    这里再说几点对于小系统应用es的优化和建议:

第一:建议用SSD,提高性能;
第二:新建索引的时候 分片设置成1,备份设置成0,能有效的降低IOPS;(分片多,备份多了,一直在进行磁盘操作,以及内存也紧张,弄不好,服务器配置低的话,直接炸了);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值