下载ES安装包
ElasticSearch下载地址:点我
我这里是下载的linux已经编译好的包,直接配置启动就行了,因为它自带了JDK等环境。
如果你想要使用你自己配置好的 Java 版本,需要设置 JAVA_HOME
环境变量 —— 参考
下载好之后,我们进行tar
包解压
1 2 3 4 5 6
| mkdir /mydata/elasticsearch
cd /mydata/elasticsearch
tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz
|
解压后的目录组成:
1 2 3 4 5 6 7 8 9 10 11
| . ├── bin # 二进制脚本存放目录,包括 elasticsearch 来指定运行一个 node,包括 elasticsearch-plugin 来安装 plugins ├── config # 包含了 elasticsearch.yml 配置文件 ├── data # 节点上分配的每个 index/分片 的数据文件 ├── lib ├── LICENSE.txt ├── logs ├── modules ├── NOTICE.txt ├── plugins # 插键文件存放的位置 └── README.textile
|
准备工作
不能使用 root 用户启动 es,否则会报错:
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
我们需要新建一个操作es的用户:
1 2 3 4 5
|
useradd -g es es
passwd es
|
为了让我们的es用户能更好的操作es应用,我们修改es的文件所有者
1 2
| chown -R es:es elasticsearch-7.15.1
|
ElasticSearch相关配置
单节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| vim config/elasticsearch.yml
cluster.name: my-es
network.host: 0.0.0.0
node.name: node-130
path.data: /mydata/elasticsearch/elasticsearch-7.15.1/data
path.logs: /mydata/elasticsearch/elasticsearch-7.15.1/logs
discovery.seed_hosts: ["192.168.200.130"]
cluster.initial_master_nodes: ["node-130"]
http.port: 9200
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: /.*/
|
集群
192.168.200.130
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| vim config/elasticsearch.yml
cluster.name: my-es
network.host: 0.0.0.0
node.name: node-130
path.data: /mydata/elasticsearch/elasticsearch-7.15.1/data
path.logs: /mydata/elasticsearch/elasticsearch-7.15.1/logs
discovery.seed_hosts: ["192.168.200.130","192.168.200.131","192.168.200.132"]
cluster.initial_master_nodes: ["node-130"]
http.port: 9200
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: /.*/
|
192.168.200.131
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| vim config/elasticsearch.yml
cluster.name: my-es
network.host: 0.0.0.0
node.name: node-131
path.data: /mydata/elasticsearch/elasticsearch-7.15.1/data
path.logs: /mydata/elasticsearch/elasticsearch-7.15.1/logs
discovery.seed_hosts: ["192.168.200.130","192.168.200.131","192.168.200.132"]
cluster.initial_master_nodes: ["node-130"]
http.port: 9200
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: /.*/
|
192.168.200.132
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| vim config/elasticsearch.yml
cluster.name: my-es
network.host: 0.0.0.0
node.name: node-132
path.data: /mydata/elasticsearch/elasticsearch-7.15.1/data
path.logs: /mydata/elasticsearch/elasticsearch-7.15.1/logs
discovery.seed_hosts: ["192.168.200.130","192.168.200.131","192.168.200.132"]
cluster.initial_master_nodes: ["node-130"]
http.port: 9200
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: /.*/
|
这里的配置基本上和单机启动一样,只不过在discovery.seed_hosts中指定了节点列表。然后将每个节点启动即可,然后分别访问各服务的9200端口,查看服务是否正常启动。
同时,也可以访问任意节点的http://host:9200/_cluster/health查看集群状态:green表示正常,yellow表示警告,red表示异常
注:并不是每个节点都需要配置cluster.initial_master_nodes
JVM 配置
JVM 参数设置可以通过 jvm.options
文件(推荐方式)或者 ES_JAVA_OPTS
环境变量来修改。
jvm.options
位于
$ES_HOME/config/jvm.options
当通过 tar
or zip
包安装
/etc/elasticsearch/jvm.options
当通过 Debian or RPM packages
官网也介绍了如何设置堆大小。
默认情况,ES 告诉 JVM 使用一个最小和最大都为 1GB 的堆。但是到了生产环境,这个配置就比较重要了,确保 ES 有足够堆空间可用。
ES 使用 Xms(minimum heap size)
和 Xmx(maxmimum heap size)
设置堆大小。你应该将这两个值设为同样的大小。
Xms
和 Xmx
不能大于你物理机内存的 50%。
设置的示例:
测试
1 2 3 4
| ./bin/elasticsearch &
curl -get localhost:9200
|
ES-FAQ
Q1:[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
1 2
| echo "vm.max_map_count=262144" > /etc/sysctl.conf sysctl -p
|
Q2:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
1 2 3 4 5 6 7
| sudo vim /etc/security/limits.conf # 加入以下内容 * soft nofile 300000 * hard nofile 300000 * soft nproc 102400 * soft memlock unlimited * hard memlock unlimited
|
修改了limits.conf,不需要重启,重新登录即生效。
查看当前用户的软限制
命令:ulimit -n 等价于 ulimit -S -n
查看当前用户的硬限制
命令:ulimit -H -n
Q3:master_not_discovered_exception
主节点指定的名字要保证存在,别指定了不存在的节点名
其他配置
我们使用浏览器连接es可能无法连接上,这时候看一看是不是防火墙端口是否放行
1 2 3 4 5 6 7 8 9 10
| systemctl status firewalld
firewall-cmd --query-port=9200/tcp firewall-cmd --query-port=9300/tcp
firewall-cmd --permanent --add-port=9200/tcp firewall-cmd --permanent --add-port=9300/tcp
firewall-cmd --reload
|
ik分词器
ElasticSearch应用时,我们常常会使用到中文,这样ElasticSearch原来的分词器就不够用了,需要安装一个中文分词器,用的多的就是IK分词器,下载地址(下载.zip包):https://github.com/medcl/elasticsearch-analysis-ik/releases
下载好之后,在ElasticSearch主目录下的plugins目录新建一个目录,然后将下载好的ik分词器压缩包放进去,再使用unzip解压:
1 2 3 4 5 6 7 8
| mkdir plugins/analysis-ik
mv elasticsearch-analysis-ik-7.15.1.zip plugins/analysis-ik/
cd plugins/analysis-ik
unzip elasticsearch-analysis-ik-7.15.1.zip
|
做完之后重启ElasticSearch就可以了
Kibana安装
Kibana下载地址:https://www.elastic.co/downloads/past-releases#kibana
同样的,下载编译好的包(7.15.1)
然后解压,然后修改config/kibana.yml,添加ElasticSearch的节点配置
1 2 3 4 5 6 7 8 9
| server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://192.168.200.130:9200","http://192.168.200.131:9200","http://192.168.200.132:9200"]
|
然后就可以启动了:
1 2 3 4
| chown -R es:es kibana-7.15.1-linux-x86_64
kibana-7.12.0-linux-x86_64/bin/kibana
|
防火墙放行端口
1 2 3 4
| firewall-cmd --permanent --add-port=5601/tcp
firewall-cmd --reload
|
启动之后,访问http://ip:5601就能访问到kibina了,kibina内部功能功能很多,像绘制图表仪表盘等等,还有很多模拟数据,可自行了解,就是说kibina主要是通过连接ElasticSearch来查询数据,然后将数据统计汇总呈现出图形化的界面来方面我们进行数据分析的。
不过我们开发常用的就是它的Dev-Tools了,用来发送Restfull的请求来访问操作ElasticSearch:
进入dev-tools后就可以自行操作了: