ElasticSearch之安装
ElasticSearch 是目前非常流行的搜索引擎,对海量数据搜索是非常友好,并且在高并发场景下,也能发挥出稳定,快速特点。也是大数据和索搜服务的开发人员所极力追捧的中间件
在安装 Elasticsearch 之前,您需安装并配置好 JDK, 设置好环境变量 $JAVA_HOME
。
众所周知,Elasticsearch 版本很多,不同的版本对 Java 的依赖也有所差别:
- Elasticsearch 5 需要 Java 8 以上版本;
- Elasticsearch 6.5 开始支持 Java 11;
- Elasticsearch 7.0 开始,内置了 Java 环境,所以说,安装 7.0+ 版本会方便很多。
因为我安装的版本是7.5所以不需要单独进行Java环境的安装,本次教程中用到的版本是7.5
1. JDK 环境
ElasticSearch 在 7.x 中自带 JDK 环境,所以现在不一定要安装 JDK。默认是先判断当前服务器是否安装 JDK,如果安装了就使用服务器已安装的 JDK,否则会使用自带的 JDK,当然这个也是可以手动设置。
2. 创建启动账号
由于 ElasticSearch 默认是不支持 root 账号权限启动,所以第一步要先创建启动账号。
1)创建一个 ElasticSearch 的运行组 es:
groupadd es
2)在 es 组中创建用户:
useradd elastic -g es
3)设置新用户密码:
passwd elastic
4)给解压出的 ElasticSearch 包授权:
chown -R elastic:es elasticsearch-7.5.0
3. 修改配置文件
先了解一下文件结构:
进入到 /elasticsearch-7.5.0
目录,在 config
目录里有个 elasticsearch.yml
文件,修改里面当前需要的配置。
-
cluster.name 是所属集群的名称
-
node.name 当前节点名称
-
network.host 当前节点所绑定地址,绑定到
0.0.0.0
所有的访问 -
http.port 对外提供服务的端口号
-
path.data 数据存储目录,这个我一般不适用默认目录,但是要给自定义的目录授权
-
path.log 日志目录,和 path.data 类似配置
另外一个重要的配置,在当前目录中的 jvm.options
文件设置。这里设置堆内存大小,建议设置机器内存的 50% 大小。
因为自己服务器内存只有2g,加上启动服务占据差不多1g,所以我设置了500m -Xms500m -Xmx500m 注意点:这两个值要设置一样
4. 启动
./bin/elasticsearch -d
-d: 后台运行
出现started,表示启动成功。可以通过访问外网进行验证
如果访问成功的话,会出现内容:
{ name: "node-1", cluster_name: "my-application", cluster_uuid: "ouUTDd9zRza3PhMsGFpSSw", version: { number: "7.5.0", build_flavor: "default", build_type: "tar", build_hash: "e9ccaed468e2fac2275a3761849cbee64b39519f", build_date: "2019-11-26T01:06:52.518245Z", build_snapshot: false, lucene_version: "8.3.0", minimum_wire_compatibility_version: "6.8.0", minimum_index_compatibility_version: "6.0.0-beta1" }, tagline: "You Know, for Search" }
可以使用命令进行访问:
curl localhost:9200
注意点:
- 有些童鞋的机器内存可能不够,就需要修改 JVM 参数,配置文件路径为
config/jvm.options
,ES V7.1 版本默认为1g
, 老版本为2g
, 你可以自行修改。 Xmx
和Xms
数值请设置相同;Xmx
不要超过机器内存的50%
;- 内存总量不要超过 30GB, 参见官方文档 https://www.elastic.co/cn/blog/a-heap-of-trouble;
常见问题
启动服务:
1. Exception in thread "main" java.nio.file.AccessDeniedException:
错误原因:使用非 root用户启动ES,而该用户的文件权限不足而被拒绝执行
chown -R 用户名:用户名 文件(目录)名
2. 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
原因:默认的发现设置不适合生产使用;至少有一个[发现]。seed_hosts,发现。seed_providers,集群。必须配置initial_master_nodes]
解决:
这时候继续编辑elasticsearch.yml文件 将 #cluster.initial_master_nodes: ["node-1", "node-2"] 修改为 cluster.initial_master_nodes: ["node-1"],记得保存。
其他:
Elasticsearch默认安装后设置的内存是1GB,这是远远不够用于生产环境的。
有两种方式修改Elasticsearch的堆内存:
- 设置环境变量:
export ES_HEAP_SIZE=10g
在es启动时会读取该变量; - 启动时作为参数传递给es:
./bin/elasticsearch -Xmx10g -Xms10g
虚拟内存调整大小:
# 编辑 sysctl.conf 文件 vim /etc/sysctl.conf # 在 sysctl.conf 中添加 vm.max_map_count= 262144 # 查看刚设置的是否生效 sysctl -p
基本使用
日常会使用连接工具进行可视化的操作。例如:elasticsearch-head
使用的时候,需要进行配置修改,否则无法连接成功:
vim config/elasticsearch.yml 最后追加: http.cors.enabled: true http.cors.allow-origin: "*"