系统环境

  • CentOS 7

  • Oracle jdk-8u121-linux-x64

  • 创建elasticsearch用户

    1useradd elasticsearch
    
  • 最大打开文件描述符数/etc/security/limits.conf

    1elasticsearch  -  nofile  65536
    
  • vm.max_map_count

    1sysctl -w vm.max_map_count=262144
    

    修改配置文件/etc/sysctl.conf

    1vm.max_map_count=262144
    

安装elasticsearch

  • 下载并解压缩elasticsearch-5.2.0.tar.gz

    1su elasticsearch
    2cd /usr/local
    3wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
    4tar -zxvf elasticsearch-5.2.0.tar.gz
    5rm -f elasticsearch-5.2.0.tar.gz
    6mv elasticsearch-5.2.0/ elasticsearch
    
  • 创建EnvironmentFile /etc/elasticsearch/elasticsearch

    1JAVA_HOME=/usr/local/jdk
    
  • 关于ES_JAVA_OPTS环境变量

    ES是用Java语言开发的,因此JAVA_OPTS对ES十分重要,例如-Xmx参数用于指定最大可使用内存,一般建议将-Xmx设置为物理内存的一半。 为了避免JAVA_OPTS对整个机器环境起作用,可以使用ES_JAVA_OPTS设置。

    推荐config/jvm.options这个配置文件中指定JVM参数,这个配置文件中的配置最终会覆盖ES_JAVA_OPTS环境变量。

    1-Xms2g
    2-Xmx2g
    
  • 创建systemd的服务文件/usr/lib/systemd/system/elasticsearch.service

     1[Unit]
     2Description=ElasticSearch Service
     3After=network.target
     4[Service]
     5Type=simple
     6EnvironmentFile=-/etc/elasticsearch/elasticsearch
     7ExecStart=/usr/local/elasticsearch/bin/elasticsearch
     8PIDFile=/usr/local/elasticsearch/run/elasticsearch.pid
     9User=elasticsearch
    10LimitNOFILE=65536
    11Restart=on-failure
    12[Install]
    13WantedBy=default.target
    

    这里在systemd配置文件里设置LimitNOFILE=65536最大打开文件描述符数,而没有按照ES文档中描述的在/etc/security/limits.conf修改,这是因为在CentOS中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf配置作用域缩小了,只适用于通过PAM认证登录用户的资源限制,而对systemd的service的资源限制不生效。

  • 启动elasticsearch

    1systemctl daemon-reload
    2systemctl start elasticsearch
    

elasticsearch.yml常用配置

 1cluster.name: my-application				#集群名称
 2node.name: node-1							#节点名称
 3path.data: /home/elasticsearch/data			#索引存储位置
 4path.logs: /home/elasticsearch/logs			#日志存储位置
 5bootstrap.memory\_lock: true				#Lock the memory on startup
 6network.host: 192.168.61.100
 7http.port: 9200
 8discovery.zen.ping.unicast.hosts: ["host1", "host2"]
 9discovery.zen.minimum_master_nodes: 3
10gateway.recover_after_nodes: 3

安装elasticsearch-head

因为ES 5开始不再支持site plugin,因此elasticsearch-head不能再以插件的形式安装,需要单独以server的形式运行。 这里使用docker来运行。

1docker run -p 9100:9100 -d --name es-head mobz/elasticsearch-head:5-alpine

elasticsearch.yml追加以下关于跨域访问的 配置

1http.cors.enabled: true
2http.cors.allow-origin: "*"

注这里设置http.cors.allow-origin: “*", 安全起见正式环境应该对http.cors.allow-origin专门设置。

最后以http://192.168.61.100:9100/?base_uri=http://192.168.61.100:9200访问。

参考文档