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: "*"

 

posted @ 2020-03-15 23:41  X-Wolf  阅读(450)  评论(0编辑  收藏  举报