【Elasticsearch】ES单机/集群安装 + Kibana集成(6.x版本)

大家好,我是J.O.老弟,今天这篇文章来分享一下Elasticsearch的单机及集群安装,基于6.x的版本。

文章目录

    • 1、ES的单机安装
          • (1)下载压缩包(6.6.2版本)
          • (2)解压缩并修改配置文件
          • (3)修改系统环境变量vm.max_map_count
          • (4)修改JVM分配大小
          • (5)修改最大文件描述符数量和用户最大线程数
          • (6)启动Elasticsearch
      • 2、Kibana 安装
          • (1)下载并解压kibana
          • (2)修改配置文件
          • (3)启动
          • (4)测试
      • 3、分词器
          • (1)ik分词器
          • (2)拼音分词器
      • 4、ES集群搭建
          • (1)集群配置
          • (2)集群健康检查
          • (3)可能遇到的问题

1、ES的单机安装

(1)下载压缩包(6.6.2版本)

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz

(2)解压缩并修改配置文件

cd 到elasticsearch 的下载目录,执行

	tar -zxf elasticsearch-6.6.2.tar.gz
 	cd elasticsearch-6.6.2

修改Elasticsearch.yml文件

 	network.host: 0.0.0.0 #设置外网访问,默认配置外网无法访问
(3)修改系统环境变量vm.max_map_count

vi /etc/sysctl.conf 添加以下内容

	 vm.max_map_count=262144

若不修改,可能在启动es时报如下错误:

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

修改完需要重启才能生效

查看刚修改的变量当前值是多少

 	sysctl -a|grep vm.max_map_count

若不想重启电脑的前提下修改变量,单次生效

 	sysctl -w vm.max_map_count=262144
(4)修改JVM分配大小

vi ES安装目录/config/jvm.options

 	-Xms1g
	-Xmx1g

注意xms和xmx大小要一致,若服务器内存不合适,可以调至512m或其他大小。

此项修改针对的是如下这种启动时报错:

Exception in thread “main” java.nio.file.AccessDeniedException: /data/app/elasticsearch6.6.2/config/jvm.options
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:60)

(5)修改最大文件描述符数量和用户最大线程数

vim /etc/security/limits.conf

	* soft nofile 65536
	* hard nofile 65536
	* soft nproc 4096
	* hard nproc 4096

若修改后启动ES仍报错,且确认修改无误,需退出登录账号重新登录后尝试。

此项修改针对的是如下几种启动时报错:

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

[2]: max number of threads [1786] for user [lck] is too low, increase to at least [4096]

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

(6)启动Elasticsearch

不要以root用户进行启动

创建用户

	useradd jeffosmond
	echo "要创建的账户的密码" | passwd jeffosmond --stdin

启动ES

	# 前台启动
	ES安装目录/bin/elasticsearch

	# 后台启动
	ES安装目录/bin/elasticsearch -d

2、Kibana 安装

(1)下载并解压kibana

https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz

(2)修改配置文件
	vi kibana-6.4.2-linux-x86_64/config/kibana.yml
	server.port: 5600                            ##服务端口
	server.host: "0.0.0.0"                       ##服务器IP(0.0.0.0代表外网可访问)
	elasticsearch.url: "http://localhost:9200"   ##elasticsearch服务地址
(3)启动
	 -- 前台启动
	 ./bin/kibana
	 -- 后台启动
	 nohup ./bin/kibana &
(4)测试

登录Kibana的首页(刚才配置的IP地址加端口号)例如:

http://localhost:5600

3、分词器

下载分词器插件并解压缩至ES的plugin目录下(记得先在plugin下创建子目录,不要直接解压到plugin下),解压后重启ES就可以直接使用了。测试安装好的分词器是否可用,可以在kibana的devtool中进行。
【Elasticsearch】ES单机/集群安装 + Kibana集成(6.x版本)_第1张图片

(1)ik分词器

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.6.2

测试方法:在kibana的devtools中输入:

//  不使用分词器
POST _analyze 
{
	"analyzer": "simple",
	"text": "我是一个小可爱,咿呀咿呀呦!"
}
// 使用ik分词器
POST _analyze 
{
	"analyzer": "ik_smart",
	"text": "我是一个小可爱,咿呀咿呀呦!"
}
(2)拼音分词器

https://github.com/medcl/elasticsearch-analysis-pinyin/releases/tag/v6.6.2

测试方法:在kibana的devtool中输入:

GET /medcl/_analyze
{
 "text" : ["刘德华"],
 "analyzer": "pinyin_analyzer"
}

4、ES集群搭建

整体思路就是将单机的elasticsearch 复制三份,并按如下内容配置每一个节点的elasticsearch.yml 配置文件

(1)集群配置
	# 集群名称(需保证集群内所有节点配置的集群名称相同)
 	cluster.name: kkb-es
 	# 节点名称(每个节点的名称都不一样)
 	node.name: node0
 	# 是否为master节点
 	node.master: true
 	# 为es设置ip绑定,默认127.0.0.1即只能本地访问
 	network.host: 0.0.0.0
 	# http监听端口(默认9200,若被占用,则在9200~9300范围递增)
 	http.port: 9200
 	# TCP监听端口(默认9300,若被占用,则在9300~9400范围递增)
 	transport.tcp.port: 9300
 	# 多个集群服务的访问地址(节点间访问)
 	discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
 	# 通过配置这个参数来防止集群脑裂现象:(集群总节点数量/2)+1
 	discovery.zen.minimum_master_nodes: 2
 	http.cors.enabled: true
 	http.cors.allow-origin: "*"
 	# 可以指定es的数据存储目录,默认存储在es_home/data目录下
 	path.data: /data/appData/es-6.3.1/data
 	# 可以指定es的日志存储目录,默认存储在es_home/logs目录下
 	path.logs: /data/appLog/es-6.3.1/logs

(2)集群健康检查
 http://集群地址:集群配置端口/_cat/health?v
 
 // 验证群集是否启动,带“*”证明是master节点,否则是slave节点
 http://ES的服务器ip:9200/_cat/nodes?pretty
(3)可能遇到的问题

[2018-10-25T14:50:657][INFO]…[node0] failed to send join request to master (…省略) not master for join request];],tried [3] times

解决方案: 将节点data文件夹下的文件清空,默认在ES所在目录下的data中

你可能感兴趣的:(全文检索技术)