环境须要JDK 8 及以上html
详细步骤java
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.zip
node
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.zip.sha512
linux
若是没有安装shasum
命令须要执行下面的命令 -> 验证文件是否完整web
yum install perl-Digest-SHA
bootstrap
shasum -a 512 -c elasticsearch-6.5.4.zip.sha512
vim
unzip elasticsearch-6.5.4.zip
网络
cd elasticsearch-6.5.4/
cors
若是直接使用root
去启动 ElasticSearch 会报错负载均衡
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
由于官方不建议使用 root 启动,因此要新建用户并受权
useradd elasticUser
给 elasticUser 受权
chown -R elasticUser:elasticUser /usr/local/tools/elasticsearch-6.5.4
切换到 elasticUser 用户
su elasticUser
启动 ElasticSearch
cd /usr/local/tools/elasticsearch-6.5.4
./bin/elasticsearch
此时能够启动 ElasticSearch,可能报出
JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)
这是说明 Java 虚拟机的内存不够,此时能够修改 jvm.options 文件
vim config/jvm.options
将
-Xms1g -Xmx1g
修改成 500M或者更小,根据机器自定义配置
-Xms500m -Xmx500m
可是外网是没法访问的,此时须要修改配置文件
vim config/elasticsearch.yml
在尾部添加
network.host: 0.0.0.0 discovery.zen.ping.unicast.hosts: ["0.0.0.0"]
此时再启动 ElasticSearch 发现会报错
ERROR: [2] bootstrap checks failed # maxfile descriptors为最大文件描述符,设置其大于65536便可 [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536] # max_map_count文件包含限制一个进程能够拥有的VMA(虚拟内存区域)的数量,系统默认是65530,修改为262144 [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
此时须要切换 root 用户更改两个配置文件
su root
而后输入 root 用户的密码,开始更改文件
对于 [1] 修改 /etc/security/limits.conf
文件,此文件是 linux 资源使用配置文件,能够用ulimit -a
查看,soft 是一个警告值,而 hard 则是一个真正意义的阀值,*
表示全部用户
vim /etc/security/limits.conf
在最底部增长
# 打开文件的最大数目 * - nofile 65536 # 最大锁定内存地址空间 * - memlock unlimited
对于 [2] 修改 /etc/sysctl.conf
文件,此文件是 linux 系统控制文件,做用是用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys
中。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项。
vim /etc/sysctl.conf
在最底部增长
# 文件包含限制一个进程能够拥有的 VMA(虚拟内存区域)的数量,默认是 65530 vm.max_map_count=262144
修改此配置须要重启机器才能生效
配置 elasticsearch 的集群名称,默认是 elasticsearch。elasticsearch 会自动发如今同一网段下的集群名为elasticsearch 的主机,若是在同一网段下有多个集群,就能够用这个属性来区分不一样的集群。生成环境时建议更改
节点名,默认随机指定一个 name 列表中名字,该列表在 elasticsearch 的 jar 包中config
文件夹里name.txt
文件中,其中有不少做者添加的有趣名字,大部分是漫威动漫里面的人物名字。生成环境中建议更改以能方便的指定集群中的节点对应的机器
指定节点的部落属性,这是一个比集群更大的范围
指定该节点是否有资格被选举成为node
,默认是true
,elasticsearch 默认集群中的第一台启动的机器为master
,若是这台机挂了就会从新选举master
指定该节点是否存储索引数据,默认true
。若是节点配置node.master: false
且node.data: false
,则该节点将起到负载均衡的做用
设置默认索引分片个数,默认为5
片。索引分片对ES的查询性能有很大的影响,在应用环境,应该选择适合的分片大小
设置默认索引副本个数,默认为1
个副本。此处的1个副本是指index.number_of_shards
的一个彻底拷贝;默认 5 个分片 1 个拷贝;即总分片数为 10,是索引建立后一次生成的,后续不可更改设置 ,number_of_replicas
是能够经过API
去实时修改设置的
设置配置文件的存储路径,默认是 ElasticSearch 根目录下的config
文件夹
设置索引数据的存储路径,默认是 ElasticSearch 根目录下的 data 文件夹,能够设置多个存储路径,用逗号隔开
设置日志文件的存储路径,默认是 ElasticSearch 根目录下的logs文件夹
设置插件的存放路径,默认是 ElasticSearch 根目录下的 plugins 文件夹
设置为true
来锁住内存,防止 ElasticSearch 内存被交换出去。由于当 jvm 开始内存扩容或者收缩时 ElasticSearch 的效率会下降,因此要保证它不swap
,能够把ES_MIN_MEM
和ES_MAX_MEM
两个环境变量设置成同一个值,而且保证机器有足够的内存分配给 ElasticSearch 。同时也要容许 ElasticSearch 的进程能够锁住内存,linux 下能够经过ulimit -l unlimited
命令锁住内存
这个参数是用来同时设置bind_host
和publish_host
两个参数
只有本机能够访问http接口
设置其它节点和该节点交互的ip地址,若是不设置它会自动设置,值必须是个真实的ip地址
设置对外服务的http
端口,默认为9200
设置 TCP 传输端口,这个端口很是重要,节点以前传输数据也是走这个TCP
端口,官方提供的ES JAVA API
也是经过这个端口传输数据的
设置是否压缩TCP传输时的数据,默认为false
,不压缩
设置请求内容的最大容量,默认100mb
使用http
协议对外提供服务,默认为true
,开启
http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-credentials: true
设置集群中 N 个节点启动时进行数据恢复,默认为1
设置这个参数来保证集群中的节点能够知道其它 N 个有master
资格的节点,经过配置这个参数来防止集群脑裂现象 (集群总节点数量/2)+1。默认为1
,对于大的集群来讲,能够设置大一点的值(2~4)
设置集群中自动发现其它节点时ping
链接超时时间,默认为3
秒,对于比较差的网络环境能够高点的值来防止自动发现时出错
设置是否打开多播发现节点,默认是true
设置集群中master节点的初始列表,能够经过这些节点来自动发现新加入集群的节点,能够在host
后面加上端口host:port
设置是否能够经过正则或者_all删除或者关闭索引库,默认true表示必须须要显式指定索引库名称,生产环境建议设置为true,删除索引库的时候必须显式指定,不然可能会误删索引库中的索引库