1.elasticsearch简介
- ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文检索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2.elasticsearch官网(官网打开速度有点慢)
- elasticsearch官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
- Elasticsearch7.6.2下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
3.elasticsearch下载安装
下载elasticsearch安装包
- yum -y install wget----------------------------(未安装wget请先安装)
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
解压elasticsearch7.x
- tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz
运行elasticsearch7.x(出现异常信息请看下面第4点)
- (bin目录下)./elasticsearch -------------------------------- (启动)
- (bin目录下)./elasticsearch -d -------------------------------- (后台启动)
- curl 127.0.0.1:9200 --------------------------------------------- (访问es)
4.elasticsearch7.x异常信息解决
异常信息一:
- OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000000074a660000, 3046768640, 0) failed; error='Not enough space' (errno=12)
- 错误原因jvm内存溢出,需要修改jvm.options文件的-Xms1g-Xmx1g(根据自身机器情况修改,es运行很占内存,建议虚拟机的话就多分配点内存,云服务就购买运行内存大一点的机器)
- (config目录下) vim jvm.options
- -Xms1g-Xmx1g(默认是1g)
异常信息二:
- java.lang.RuntimeException: can not run elasticsearch as root
- 错误原因是es不能使用root用户进行启动
- useradd xxx ---------------------------------------------------------- 新建用户
- passwd xxx -----------------------------------------------------------设置密码
- su xxx -----------------------------------------------------------切换用户
异常信息三:
- Exception in thread "main" java.nio.file.AccessDeniedException: /home/temp/elasticsearch7.x/elasticsearch-7.6.2/config/jvm.options
- 错误原因该用户没有可执行权限
- su root ------------------------------------------------------------------ 切换回root用户
- chmod -R 777 /home/temp/elasticsearch7.x ------------------ 给予执行权限
异常信息四:
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- elasticsearch用户拥有的内存权限太小,至少需要262144;解决方法修改sysctl.conf,追加vm.max_map_count = 655360
- su root ----------------------------------------------------(切换回root用户在进行操作)
- vim /etc/sysctl.conf
- vm.max_map_count = 655360
- sysctl -p
异常信息五:
- the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
- 需要配置[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]任意一项
- (config目录) vim elasticsearch.yml
- cluster.initial_master_nodes: ["127.0.0.0", "[::1]"]
5.设置外网访问(出现异常信息请看异常信息四和异常信息五)
修改elasticsearch.yml配置
- (config目录) vim elasticsearch.yml
- network.host: 0.0.0.0
- cluster.initial_master_nodes: ["127.0.0.0", "[::1]"]
这时候如果你是第一次安装,没有开放防火墙端口,则通过IP是无法进行连接的,阿里云配置安全组即可!!
- firewall-cmd --permanent --add-port=9200/tcp --------------------(开放9200端口)
- firewall-cmd --reload ----------------------------------------------------- (重启防火墙)
6.elasticsearch7.x集群配置
- -----------------------------------node1--------------------------------------------------------
- cluster.name: my-es
- node.name: node-1
- http.port: 9200
- ----------------------------------------------------------------------------------------------------
- -----------------------------------node2--------------------------------------------------------
- cluster.name: my-es
- node.name: node-2
- http.port: 9201
- ----------------------------------------------------------------------------------------------------
- (bin目录下)./elasticsearch -d -------------------------------- (后台启动)
查看是否配置成功
- curl http://127.0.0.1:9200/_cluster/health?pretty=true
ps:es集群配置非常简单,只要在同一网段启动的es就会自动加入集群配置,简单配置只要修改下节点名称即可(这样配置请不要设置network.host和cluster.initial_master_nodes,不然则需要相应的配置)详细配置如下图
#集群名称 cluster.name: elasticsearch #节点名称 node.name: node-a #是不是有资格竞选主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 node.max_local_storage_nodes: 3 #网关地址 network.host: 192.168.11.220 #端口 http.port: 9200 #内部节点之间沟通端口 transport.tcp.port: 9300 #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点 discovery.seed_hosts: ["192.168.11.220:9300","192.168.11.220:9301","192.168.11.220:9302"] #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["node-a", "node-b","node-c"] #数据存储路径 path.data: /home/es/software/es/data #日志存储路径 path.logs: /home/es/software/es/logs