一、Elasticsearch单机安装

1.下载压缩包并解压

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

cd 到 elasticsearch下载目录

# 解压
tar -zxf elasticsearch-6.6.2.tar.gz
# 切换到安装目录
cd elasticsearch-6.6.2

ES 目录介绍:

  • bin:可执行文件在里面,运行es的命令就在这个里面,包含了一些脚本文件等
  • config:配置文件目录
  • JDK:java环境
  • lib:依赖的jar,类库
  • logs:日志文件
  • modules:es相关的模块
  • plugins:可以自己开发的插件
  • data:这个目录没有,自己新建一下,后面要用 -> mkdir data,这个作为索引目录

2.修改核心配置文件

# 修改config/elasticsearch.yml
vi config/elasticsearch.yml

常用配置如下,测试的话只要改network.host,允许外网访问即可:

# 修改集群名称,默认是elasticsearch,虽然目前是单机,但是也会有默认的
# cluster.name: myelasticsearch
# 为当前的es节点取个名称,名称随意,如果在集群环境中,都要有相应的名字
# node.name: es-node0

# 修改data数据保存地址
# path.data: /usr/local/elasticsearch-6.6.2/data
# 修改日志数据保存地址
# path.logs: /usr/local/elasticsearch-6.6.2/logs

# 设置外网访问 默认配置外网无法访问
network.host: 0.0.0.0
# 默认端口号,可以自定义修改
# http.port: 9200
# 集群节点,名字可以先改成之前的那个节点名称
# cluster.initial_master_nodes: ["es-node0"]

3.修改JVM分配大小

vi config/jvm.options

默认Xms和Xmx都是1g,如果虚拟机内存没这么大,修改一下即可:

-Xms128m
-Xmx128m
如图:

用kibana查询es数据_kibana

4.启动Elasticsearch

启动

bin/elasticsearch # 前台启动,停止直接ctrl+c就可以
bin/elasticsearch -d # 后台启动,停止用kill杀进程的方法,先jps查看jvm的进程

启动后发现报错,因为ES不允许使用root操作es,需要添加用户:

用kibana查询es数据_elasticsearch_02

5.添加用户

创建用户lck,并设置密码:

useradd lck
echo "Password" | passwd lck --stdin

修改权限,把当前elasticsearch目录改成lck用户的所属

chown -R lck:lck ./
如图:

用kibana查询es数据_elasticsearch_03

可以为lck用户赋予超级管理员权限:

vi /etc/sudoers

添加如下内容:

lck    ALL=(ALL)    ALL
如图

用kibana查询es数据_重启_04

切换用户

su lck

再次执行启动命令即可。

6.可能出现的错误以及解决

问题

用kibana查询es数据_kibana_05


如图所示,最大文件描述符数量用户最大线程数最大虚拟内存区域数量太小了。

文件描述符数量:每个进程可以打开的文件数

关于linux虚拟内存区域:
通过虚拟内存映射实现零拷贝,高效存储文件。

max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。

问题解决:修改系统环境变量vm.max_map_count

切换到root用户修改:

vi /etc/sysctl.conf

添加如下内容

vm.max_map_count=262144

如图:

用kibana查询es数据_重启_06

修改完需要重启才能生效、或者刷新

sysctl -p # 刷新,从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

sysctl -a|grep vm.max_map_count #查看当前系统的环境变量
sysctl -w vm.max_map_count=262144 #临时改变某个系统参数的值,重启后失效

问题解决:修改最大文件描述符数量和用户最大线程数

切换到root用户修改:

vim /etc/security/limits.conf
# 第一列表示用户,* 代表所有用户
* soft nofile 65536  # 可打开的文件描述符的最大数(超过会警告)
* hard nofile 65536	 # 可打开的文件描述符的最大数(超过会报错)
* soft nproc 4096    # 单个用户可用的最大进程数量(超过会警告)
* hard nproc 4096	 # 单个用户可用的最大进程数量(超过会报错)

如图:

用kibana查询es数据_重启_07


soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。


hard xxx : 代表严格的设定,不允许超过这个设定的值。


如:soft 设为1024,hard设为2048 ,则当你使用数在1~1024之间时可以随便使用,1024~2048时会出现警告信息,大于2048时,就会报错。


nproc : 是操作系统级别对每个用户创建的进程数的限制


nofile : 是每个进程可以打开的文件数的限制

修改完需要重启

reboot # 重启

7.测试

用kibana查询es数据_用kibana查询es数据_08

端口号意义:

  • 9200:Http协议,用于外部通讯
  • 9300:Tcp协议,ES集群之间是通过9300通讯

8.分词器安装

下载后直接解压缩到elasticsearch的plugins目录下即可,注意分词器版本一定要和elasticsearch版本一致。

ik分词器

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

unizp -d ./plugins/ik elasticsearch-analysis-ik-6.6.2.zip

拼音分词器

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

unizp -d ./plugins/pinyin elasticsearch-analysis-pinyin-6.6.2.zip

用kibana查询es数据_kibana_09

二、kibana安装

1.下载解压

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

tar -zxf kibana-6.6.2-linux-x86_64.tar.gz

2.修改配置文件

vi kibana-6.4.2-linux-x86_64/config/kibana.yml
server.port: 5601 ##服务端口
server.host: "0.0.0.0" ## 允许外网访问的ip
elasticsearch.url: "http://localhost:9200" ##elasticsearch 服务地址

3.启动

./bin/kibana
nohup ./bin/kibana & # 后台启动

4.测试

用kibana查询es数据_文件描述符_10

三、Elasticsearch集群搭建

1.集群配置

在上面单机基础上复制3个做如下配置:

vi config/elasticsearch.yml
cluster.name: kkb-es	#集群名称,节点就靠这个名字认为自己是哪个集群
node.name: node0	#节点名称,集群中必须唯一
node.master: true	#是否具有成为主节点的资格
network.host: 0.0.0.0	#允许外网访问的地址
http.port: 9200	#如果是在一台服务器上装多个ES,要保证唯一,否则默认即可
transport.tcp.port: 9300 #如果在一台服务器上装多个ES,要保证唯一,否则默认即可
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]	#集群中所有节点的通信地址,就是上面那个tcp地址
discovery.zen.minimum_master_nodes: 2	#防止脑裂,值为集群中节点总数的一半+1即可。
http.cors.enabled: true	#允许跨域请求,即允许其他插件访问
http.cors.allow-origin: "*"	#允许跨域请求的源

只要改node.name、http.port、transport.tcp.port,其他都是共性的配置。
配置完成后依次启动即可。

2.集群状态检查

http://集群中任意一台服务器地址/_cat/health?v

用kibana查询es数据_elasticsearch_11

kibana查看:

用kibana查询es数据_文件描述符_12

3.可能遇到到问题

用kibana查询es数据_文件描述符_13


原因:该ES因为单机启动过,data目录中包含了原先的索引库数据解决方案:将节点data文件下的文件清空,默认在es所在目录下的data中

用kibana查询es数据_文件描述符_14