接下来让我们来了解下如何设置elasticsearch的一些配置。
下载
es支持很多平台,es7.0.1除了不支持Ubuntu 14.04、SLES 11 SP4**、Debian 7、Solaris/SmartOS这几个平台外,其他的平台都支持安装。
es有自带的jvm,可以使用它自带的jvm。当然也可以使用自己的jdk,但是官方推荐使用支持LTS版本的Java,不然启动可能会失败。
可以使用多种方式来启动es,使用自己的服务器或者购买云服务。es提供了很多安装包,下载地址,可以根据自己需求下载不同平台的包。
es还提供了一些管理工具:Puppet、Chef、Ansible,来帮助我们提供部署效率。
下面是在linux下安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.1.0-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.1.0-linux-x86_64.tar.gz
cd elasticsearch-7.1.0/
启动
./bin/elasticsearch
这样的启动是在前端启动,如果你按ctrl+c,那么就会关闭es。
使用以下命令来后台启动es
nohup ./bin/elasticsearch &
判断是否启动,可以看日志,或者调用http://127.0.0.1:9200/请求。
返回值
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.1.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2017-05-27T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
如何以守护进程启动
./bin/elasticsearch -d -p pid
日志在$ES_HOME/logs/目录下
如何杀掉进程
pkill -F pid
es启动的时候会去加载配置文件,文件地址为$ES_HOME/config/elasticsearch.yml,当然也可以在启动的命令行中指定参数,可以使用-E语法来设置。
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1
配置建议:一般集群相关的配置(如cluster.name)在elasticsearch.yml里面指定,节点相关的配置(如node.name)可以在命令行指定。
目录结构
直接解压es就可以启动了,不需要创建其他目录或者文件。所有安装卸载都非常方便。但是建议需要把数据、log、配置文件放在其他目录里,这样升级版本的时候或者卸载的时候不会影响数据。
类型 | 描述 | 默认路径 | 配置 |
home | es主目录或者$ES_HOME | 解压的目录 | |
bin | es和es-plugin二进制文件 | $ES_HOME/bin | |
conf | 配置文件所在目录,包括elasticsearch.yml | $ES_HOME/config | 可以配置ES_PATH_CONF环境变量来自定义配置文件 |
data | 存储数据的位置,可以配置多个路径 | $ES_HOME/data | 可以通过path.data属性配置 |
logs | 日志文件路径 | $ES_HOME/logs | 可以通过path.logs配置 |
plugins | 插件文件路径,所有插件都在该目录下 | $ES_HOME/plugins | |
repo | 分片文件系统存储路径,可以配置多个路径 | 未配置 | 使用path.repo来配置 |
script | 脚本文件路径 | $ES_HOME/scripts | 使用path.scripts来配置 |
配置es
es具有很好的默认配置,基本上不需要怎么修改配置就直接可以启动了。可以通过集群更新设置的接口来修改集群的配置。在集群中一般需要配置node.name和paths,如果新的节点需要加入集群,那么需要配置cluster.name和network.host两个参数。
es一般有3个配置文件
- elasticsearch.yml 用来配置es
- jvm.options 用来配置es的jvm
- log4j2.properties 用来配置es的日志
默认情况下,这些配置文件在安装目录的conf下面。可以通过设置环境变量ES_PATH_CONF来设置配置文件路径
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
可以在启动的命令行中指定,也可以在环境变量中指定。对于安装包,他们的默认配置文件在/etc/elasticsearch下面。如果要改变他们的配置,只修改ES_PATH_CONF是不够的。需要在默认的安装路径下也要做相应的修改。像:Debian包的配置在/etc/default/elasticsearch下面;RPM包的配置在/etc/sysconfig/elasticsearch下面。
配置文件是通过yaml配置的。可以使用以下两个方式来配置
方式1:
path:
data: /var/lib/elasticsearch
logs: /var/log/elasticsearch
方式2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
可以通过${}符号来设置配置,如:
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
jvm配置
一般情况下不需要设置jvm配置参数。如果要变更,就去设置heap size。如果要设置jvm参数,那么优先在jvm.options文件里面配置。一般情况下在conf目录下,如果是Debian或者RPM安装包,那么在/etc/elasticsearch/下面。
该文件是以行分隔的形式指定:
如果一行里面都是空格,该配置会被忽略。
如果以#开头,表示备注,在加载的时候会被忽略。
以-开头表示jvm的参数,当前配置的jdk版本对应,类似-Xmx2g
如果以8:-Xmx2g
,那么表示只有jdk8的时候,该配置才生效。
如果配置了8-:-Xmx2g
,那么表示jvm大于或者等于jdk8,该配置才生效。
如果配置了8-9:-Xmx2g
,那么表示jvm在8和9之间(包含关系)时,该配置才生效。
如果配置了其他形式的字符,都会被拒绝。
还可以使用另一种方式来设置jvm变量,可以使用ES_JAVA_OPTS参数来设置,如:
export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir" ./bin/elasticsearch
目前es中只支持jvm.options或者ES_JAVA_OPTS来配置jvm。其他的配置方式都不支持。如:JAVA_OPTS
安全设置
有些信息是比较敏感的,只使用操作系统的文件权限去管理是不够的。es这边提供了一种秘钥库,使用elasticsearch-keystore来对这些敏感信息进行管理。
只有运行es的用户才能执行keystore里面的命令。只有一部分配置是从秘钥库中取读取的。每次修改这里的配置都需要重启es服务。目前es只是对keystore里面的数据做了下混淆,没有加密码保护。
如果你的es是集群,那么必须保证每个节点的配置都是一样的。
创建keystore
使用create命令来创建elasticsearch.keystore文件
bin/elasticsearch-keystore create
elasticsearch.keystore文件会创建在conf文件夹里面。
列出配置信息
使用list命令来列举配置信息
bin/elasticsearch-keystore list
添加字符串
可以使用add命令来对敏感的字符串进行设置。如身份验证的数据
bin/elasticsearch-keystore add the.setting.name.to.set
设置完之后
如果你想把某个文件里面的内容设置到秘钥库里面,那么需要使用--stdin标签
cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set
添加文件
使用add-file来添加文件。
bin/elasticsearch-keystore add-file new.file /path/example-file.json
删除配置
使用remove命令来删除配置。
bin/elasticsearch-keystore remove new.file
重载安全配置
在不重启的情况下,有些安全配置是可以被重新载入的。可以使用下面接口进行重载:
POST _nodes/reload_secure_settings
注意:本文归作者所有,未经作者允许,不得转载