Elasticsearch入门二:Elasticsearch.5.4.3+kibana5.4.3+word分词集群linux搭建

一.软件版本

  • jdk-8u191-linux-x64.tar.gz

  • elasticsearch-5.4.3.tar.gz

  • kibana-5.4.3-linux-x86_64.tar.gz

  • word-master.zip

二.环境搭建

1.jdk8安装

1.1.下载地址

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中获取安装包

1.2.在usr目录下建立java安装目录

以root用户登录

cd /usr

mkdir java

1.3.解压jdk至当前目录

tar -zxvf jdk-8u60-linux-x64.tar.gz

1.4.安装完毕为他建立一个链接以节省目录长度

ln -s /usr/java/jdk1.8.0_60/ /usr/jdk

1.5.配置环境变量

vim /etc/profile

添加如下内容:JAVA_HOME根据实际目录来

JAVA_HOME=/usr/java/jdk1.8.0_60

CLASSPATH=$JAVA_HOME/lib/

PATH= P A T H : PATH: JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

1.6.执行命令使jdk生效

source /etc/profile

1.7.查看安装情况

java -version

1.8.若以前jdk是低版本,需要执行以下命令再执行1.6步骤使生效

使用which java 和 which javac 分别可以看到原来的安装记录

which java
which javac

然后删掉原来的版本记录

rm -rf /usr/bin/java*

2.elasticsearch-5.4.3集群安装

2.1.解压

https://www.elastic.co/downloads/past-releases/elasticsearch-5-4-3获取安装包

解压到安装路径下:

tar zxvf elasticsearch-5.4.1.tar.gz

2.2.配置es

查看配置文件:

vim elasticsearch-5.4.1/config/elasticsearch.yml
vim elasticsearch-5.4.1/config/jvm.options

2.2.1.elasticsearch.yml配置详情如下:

cluster.name: cluster_name   //自己的集群名称,相同的集群名称需要保持一致。确保不要在不同的环境中重用相同的集群名称,否则可能会导致节点加入错误的集群。

node.name: master            //节点名称

node.master: true            //是否作为master,默认为true

node.data: true             //是否作为data,默认为true

path.data: /var/log/elasticsearch //默认是放在es的安装目录下,但为了避免升级丢失数据,最好不要放在安装目录上,比如/var/log/elasticsearch

path.logs: /var/data/elasticsearch //默认是放在es的安装目录下,但为了避免升级丢失数据,最好不要放在安装目录上,比如/var/data/elasticsearch

network.host: 192.168.2.36  //节点ip,生产地址一般使用IP地址

http.port: 9200    //访问端口,默认为9200       

discovery.zen.ping.unicast.hosts: ["slave1", "slave2","master"] //实现节点到节点的集群和主选择

discovery.zen.minimum_master_nodes: 2   //为避免数据丢死(脑裂),数量应该为(master_eligible_nodes / 2) + 1

2.2.2.jvm.options主要用来配置堆大小:

-Xms2g 	//最小堆大小
-Xmx2g 	//最大堆大小

设置堆大小的注意事项:

  • Xms与Xmx大小设置成一致

  • es可用的堆大小越大,它可用于缓存的内存越大,但过大的堆大小将导致垃圾回收时间增长

  • 将Xmx设置为不超过物理内存的50%,以确保为内核文件系统缓存保留足够的物理内存

  • 不要将Xmx设置为高于JVM用于压缩对象指针的截止值;确切的截止时间有所不同,但接近32gb

  • 尽量保持在零基础压缩oops的阈值以下;确切的截止时间各不相同,但在大多数系统上26gb是安全的,但在某些系统上可能高达30gb。您可以通过使用JVM选项
    -XX:+UnlockDiagnosticVMOptions
    -XX:+PrintCompressedOopsMode
    启动Elasticsearch来验证您的限制是否达到了

2.2.3.安装时系统常见问题

2.2.3.1.设置系统文件

通过编辑/etc/security/limits.conf来设置:

# Elasticsearch使用大量的文件描述符或文件句柄。耗尽文件描述符可能是灾难性的,并且很可能导致数据丢失。确保将运行Elasticsearch的用户打开的文件描述符的数量限制增加到65,536或更高
elasticsearch soft nofile 65536	

elasticsearch hard nofile 65536

# Elasticsearch为不同类型的操作使用了许多线程池。确保Elasticsearch用户能够创建的线程数至少是4096个
elasticsearch soft nproc 2048

elasticsearch hard nproc 2048

#给予elasticsearch用户锁定内存的权限,用来避免内存交换
elasticsearch soft memlock unlimited

elasticsearch hard memlock unlimited

2.2.3.2.避免内存交换

交换对于性能、节点稳定性都是非常糟糕的,应该不惜一切代价加以避免。它可能导致垃圾收集持续几分钟而不是几毫秒,还可能导致节点响应缓慢,甚至与集群断开连接。在弹性分布式系统中,让操作系统杀死节点更有效。可以通过在config/elasticsearch.yml中设置bootstrap.memory_lock: true将进程地址空间锁定到RAM中,以防止交换。

2.2.3.3.设定虚拟内存

es默认使用mmapfs目录去存储索引,操作系统默认的mmap计数限制可能太低,这可能导致内存不足异常。通过在/etc/sysctl.conf中设置max_map_count为262144将解决该问题。

vi /etc/sysctl.conf

# 在sysctl.conf中增加
vm.max_map_count = 262144

通过sysctl -p命令查看以上配置是否生效

2.3.es启动

cd elasticsearch-5.4.0/bin

#  启动 -d为守护进程运行
./elasticsearch -d

2.4.查看es集群状态

通过浏览器访问:http://192.168.2.36:9200/_cat/health?v即可以看到集群的基本状况,效果如下:

epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1540807979 18:12:59 search yellow 3 1 10 10 0 0 10 0 - 50.0%

3.kibana的安装

kibana可以作为es的图形化界面

3.1.解压

https://www.elastic.co/downloads/past-releases/kibana-5-4-3获取安装包,然后解压即可

tar zxvf kibana-5.4.3-linux-x86_64.tar.gz

3.2.启动

需要远程访问kibana的话,需要修改config/kibana.xml的配置:

#设置ip不限制
server.host: "0.0.0.0"	

#es地址
elasticsearch.url: "http://192.168.2.36:9200"

执行命令bin/kibana,然后访问http://192.168.2.36:5601查看

4.word分词插件的安装

该插件支持中文分词和词性分析

4.1.解压

https://github.com/ysc/word中获取插件压缩包,然后解压至es安装目录plugins下,且每个es服务都应该安装该插件!将es重新启动即可。

4.2.测试中文分词效果

在浏览器中访问:http://192.168.2.36:9200/_analyze?pretty&analyzer=word&text=杨尚川是APDPlat应用级产品开发平台的作者,可以看到如下效果就说明中文分词已经生效。analyzer=word表示采用的分词器是word,且与es目录plugins中的文件名保持一致。

{
“tokens” : [
{
“token” : “杨尚川”,
“start_offset” : 0,
“end_offset” : 3,
“type” : “word”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 3,
“end_offset” : 4,
“type” : “word”,
“position” : 1
},
{
“token” : “APDPlat”,
“start_offset” : 4,
“end_offset” : 11,
“type” : “word”,
“position” : 2
},
{
“token” : “应用”,
“start_offset” : 11,
“end_offset” : 13,
“type” : “word”,
“position” : 3
},
{
“token” : “级”,
“start_offset” : 13,
“end_offset” : 14,
“type” : “word”,
“position” : 4
},
{
“token” : “产品”,
“start_offset” : 14,
“end_offset” : 16,
“type” : “word”,
“position” : 5
},
{
“token” : “开发”,
“start_offset” : 16,
“end_offset” : 18,
“type” : “word”,
“position” : 6
},
{
“token” : “平台”,
“start_offset” : 18,
“end_offset” : 20,
“type” : “word”,
“position” : 7
},
{
“token” : “的”,
“start_offset” : 20,
“end_offset” : 21,
“type” : “word”,
“position” : 8
},
{
“token” : “作者”,
“start_offset” : 21,
“end_offset” : 23,
“type” : “word”,
“position” : 9
}
]
}

参考链接:

https://www.cnblogs.com/shihaiming/p/5809553.html

https://blog.csdn.net/u010824591/article/details/77775909

猜你喜欢

转载自blog.csdn.net/sunjian1122/article/details/83544697