搭建环境说明

  • 官方支持的操作系统和JVM
  • 支持Oracle JDK和Open JDK。
  • JDK8以上,推荐1.8.0_131或以上。
  • 这些文档都是基于Elasticsearch v6.7.1。

Elasticsearch 单节点

解压安装$ tar -zxvf ~/dev/doc/elasticsearch-6.7.1.tar.gz -C ~/dev/tools/$ ln -s ~/dev/tools/elasticsearch-6.7.1/ ~/dev/tools/elasticsearch$ vim .bash_profile    export ES_HOME=/Users/baozi/dev/tools/elasticsearch    export PATH=$PATH:$ES_HOME/bin    启动测试$ elasticsearch       # 启动$ elasticsearch -d    # 后台启动  warning: Falling back to java on path. This behavior is deprecated. Specify JAVA_HOMEGET /  # 用Kibana发送{  "name" : "m9Y7FJV",  "cluster_name" : "elasticsearch",  "cluster_uuid" : "zkpO2cqsSIKCn-SVae0Ohg",  "version" : {    "number" : "6.7.1",    "build_flavor" : "default",    "build_type" : "zip",    "build_hash" : "2f32220",    "build_date" : "2019-04-02T15:59:27.961366Z",    "build_snapshot" : false,    "lucene_version" : "7.7.0",    "minimum_wire_compatibility_version" : "5.6.0",    "minimum_index_compatibility_version" : "5.0.0"  },  "tagline" : "You Know, for Search"}

Elasticsearch 集群

参数方式:自己单机常用这种方式。

-E:更改参数。<br/>
path.data:数据存放目录<br/>
path.logs:日志存放目录<br/>
$ elasticsearch -d -Ecluster.name=baozi -Enode.name=node1 -Ehttp.port=10001 -Epath.data=data_node1 -Epath.logs=logs_node1$ elasticsearch -d -Ecluster.name=baozi -Enode.name=node2 -Ehttp.port=10002 -Epath.data=data_node2 -Epath.logs=logs_node2$ elasticsearch -d -Ecluster.name=baozi -Enode.name=node3 -Ehttp.port=10003 -Epath.data=data_node3 -Epath.logs=logs_node3

配置方式:正式的搭建集群

node.master:是否可以为master。默认就是true。<br/>
cluster.name:集群名称。默认elasticsearch。<br/>
node.name:节点名称。不配置自动生成,取UUID前7位。<br/>
network.host:绑定地址。默认绑定127.0.0.1[::1]。<br/>
http.port:端口号。<br/>
discovery.zen.ping.unicast.hosts: 其他节点地址列表。<br/>
  • 修改node1的elasticsearch.yml:
cluster.name: baozinode.name: node1network.host: 127.0.0.1http.port: 10001discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
  • 修改node2的elasticsearch.yml:
cluster.name: baozinode.name: node2network.host: 127.0.0.1http.port: 10002discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
  • 修改node3的elasticsearch.yml:
cluster.name: baozinode.name: node3network.host: 127.0.0.1http.port: 10003discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
  • 启动
$ ~/dev/tools/elasticsearch-node1/bin/elasticsearch -d$ ~/dev/tools/elasticsearch-node2/bin/elasticsearch -d$ ~/dev/tools/elasticsearch-node3/bin/elasticsearch -d

Elasticsearch 批量关闭

$ jps | grep "Elasticsearch" | cut -f 1 -d " " | xargs  kill -9

大型环境部署

Puppet:puppet-elasticsearch<br/>
Chef:cookbook-elasticsearch<br/>
Ansible:ansible-elasticsearch<br/>

Elasticsearch 配置

配置文件

  • elasticsearch.yml: 配置Elasticsearch。
  • jvm.options: 配置Elasticsearch JVM参数。
  • log4j2.properties: 配置Elasticsearch 日志。

更改目录位置<br/>
四个位置:安装目录,配置目录,日志目录,数据目录。<br/>

更改配置目录位置:修改环境变量

export ES_PATH_CONF=/新的config目录位置

更改日志目录位置:修改elasticsearch.yml

path.logs: /新的logs目录位置

更改数据目录位置:修改elasticsearch.yml

path.data: /新的data目录位置

jvm.options 配置规则

  • 空行会被忽略。
  • #开头,注释。
# 这是注释
  • -开头,JVM选项,独立于JVM版本。
-Xmx2g
  • 数字:-开头,JVM选项,只有当JVM版本与数字版本匹配的时候才会应用。
8:-Xmx2g
  • 数字-:-开头,JVM选项,只有当JVM版本大于等于时才应用。
8-:-Xmx2g
  • 数字-数字:-开头,JVM选项,只有当JVM版本位于两个数字范围内才会应用。
8-9:-Xmx2g
  • 除此之外,其余的配置都会被拒绝。

另外,除了使用jvm.options之外,还可以通过变量ES_JAVA_OPTS来修改

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"

log4j2.properties

  • ${sys:es.logs.base_path}:日志目录。
  • ${sys:es.logs.cluster_name}:集群名称。
  • ${sys:es.logs.node_name}:节点名称。
  • ${sys:file.separator}:路径分隔符。