elasticsearch安装

官网安装包下载地址:Download Elasticsearch | Elastic

根据系统环境选择合适的版本下载,linux用户如果不清楚内核版本是X86_64还是AARCH64可以用:arch 命令查看

es5版本需要安装jdk8以上

es6版本需要安装jdk11以上

es7版本内置了jdk12

下载好后解压缩包

tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz

cd /usr/local/elasticsearch-7.10.1/

ll

Elasticsearch 7.2.1 目录结构如下:

  • bin :脚本文件,包括 ES 启动 & 安装插件等等
  • config : elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等
  • JDK : 内置的 JDK,JAVA_VERSION="12.0.1"
  • lib : 类库
  • logs : 日志文件
  • modules : ES 所有模块,包括 X-pack 等
  • plugins : ES 已经安装的插件。默认没有插件
  • data : ES 启动的时候,会有该目录,用来存储文档数据。该目录可以设置

ES 默认安装后设置的堆内存是 1 GB,对于任何业务来说这个设置肯定是少了。那设置多少?

推荐:如果足够的内存,也尽量不要 超过 32 GB。即每个节点内存分配不超过 32 GB。 因为它浪费了内存,降低了 CPU 的性能,还要让 GC 应对大内存。如果你想保证其安全可靠,设置堆内存为 31 GB 是一个安全的选择。

启动:bin/elasticsearch

ElasticSearch后台启动命令

./elasticsearch -d

查看后台命令是否启动成功

ps aux|grep elasticsearch

打开浏览器,输入 http://localhost:9200/ 地址,然后可以得到下面的信息:

{
    "name": "BYSocketdeMacBook-Pro-2.local",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "tc9h17oqSHKvGJb3qK2tPg",
    "version": {
        "number": "7.2.1",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "fe6cb20",
        "build_date": "2019-07-24T17:58:29.979462Z",
        "build_snapshot": false,
        "lucene_version": "8.0.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

重点几个关注下即可:

  • name : 默认启动的时候指定了 ES 实例名称,name 为 BYSocketdeMacBook-Pro-2.local
  • cluster_name : 默认名为 elasticsearch
  • version :版本信息

同样通过 http://localhost:9200/_cat/nodes?v 地址,可以看到当前节点信息,如下:

127.0.0.1 30 100 22 2.87   mdi * BYSocketdeMacBook-Pro-2.local

启动后远程无法访问可以修改

  • 安装路径下的config/elasticsearch.yml文件中, 

  • 添加 network.host: 0.0.0.0 表示所有用户可访问 即远程访问

 单机集群多个 ES 实例安装

单机多个 ES 实例,形成一个 ES 单机伪集群,启动脚本如下:

bin/elasticsearch -E node.name=node01 -E cluster.name=bysocket_es_cluster -E path.data=node01_data -d

bin/elasticsearch -E node.name=node02 -E cluster.name=bysocket_es_cluster -E path.data=node02_data -d

bin/elasticsearch -E node.name=node03 -E cluster.name=bysocket_es_cluster -E path.data=node03_data -d

bin/elasticsearch -E node.name=node04 -E cluster.name=bysocket_es_cluster -E path.data=node04_data -d

命令简单解释如下:

  • node.name : ES 节点名称,即实例名
  • cluster.name : ES 集群名称
  • path.data : 指定了存储文档数据目录

执行完脚本后,需要等一会 ES 启动,也可以查看 logs 看看执行情况。

2.5 常见启动错误信息及决绝方式

1、root用户会报如下错误

这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch

解决办法:创建elsearch用户组及elsearch用户

groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch            #useradd [user name] -g [group name] -p [password]

更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch

chown -R elsearch:elsearch  elasticsearch               #chown -R [user name:group name] 该用户所分配有权限的目录
chmod 770 elasticsearch-7.10.1/ #修改权限

elasticsearch为你elasticsearch的目录名称

切换到elsearch用户再启动

su elsearch #切换账户
bin/elasticsearch    #启动

1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决:编辑 /etc/security/limits.conf,追加:

* soft nofile 65536
* hard nofile 65536

soft nofile表示软限制,hard nofile表示硬限制,

上面两行语句表示,*(所有)用户的软限制为65535,硬限制为65537,

即表示所有用户能打开的最大文件数量为65537,不管它开启多少个shell。

硬限制是严格的设定,必定不能超过这个设定的数值。

软限制是警告的设定,可以超过这个设定的值,但是若超过,则有警告信息。

在设定上,通常soft会比hard小,举例来说,sofr可以设定为80,而hard设定为100,那么你可以使用到90(因为没有超过100),但介于80~100之间时,系统会有警告信息。

修改了limits.conf,不需要重启,重新登录即生效。

查看当前用户的软限制

命令:ulimit -n  等价于 ulimit -S -n

结果:65535

查看当前用户的硬限制

命令:ulimit -H -n

结果:65537

2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

错误提示告诉我们,最大虚拟内存区域 vm.max_map_count [65530]太低,至少增加到[262144]。

解决:编辑 /etc/sysctl.conf,追加 vm.max_map_count=655360 保存后执行 sysctl -p

3、max number of threads [2048] for user [tongtech] is too low, increase to at least [4096]

错误原因:启动检查未通过 elasticsearch用户的最大线程数太低

解决: vim /etc/security/limits.d/90-nproc.conf   将2048改为4096或更大

4、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

解决:

    编辑:elasticsearch.yml

    加上:cluster.initial_master_nodes: ["node-1"] 

主要修改参数:

node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

config配置说明

cluster.name: elasticsearch
# 配置的集群名称,默认是elasticsearch,es服务会通过广播方式自动连接在同一网段下的es服务,通过多播方式进行通信,同一网段下可以有多个集群,通过集群名称这个属性来区分不同的集群
 
node.name: "Franz Kafka"
# 当前配置所在机器的节点名
 
node.master: true
指定该节点是否有资格被选举成为node(注意这里只是设置成有资格),默认true
 
node.data: true
# 指定该节点是否存储索引数据,默认为true。
 
index.number_of_shards: 5
# 设置默认索引分片个数,默认为5片。7.X版本以上配置无效
 
index.number_of_replicas: 1
# 设置默认索引副本个数,默认为1个副本。7.x版本以上配置无效
 
path.conf: /path/to/conf
# 设置配置文件的存储路径,默认是es根目录下的config文件夹。
 
path.data: /path/to/data
# 设置索引数据的存储路径
 
path.work: /path/to/work
# 设置临时文件的存储路径
 
path.logs: /path/to/logs
# 设置日志文件的存储路径
 
path.plugins: /path/to/plugins
# 设置插件的存放路径
 
network.bind_host: 192.168.0.1
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,绑定这台机器的任何一个ip。
 
network.publish_host: 192.168.0.1
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
 
network.host: 192.168.0.1
# 这个参数是用来同时设置bind_host和publish_host上面两个参数。
 
transport.tcp.port: 9300
# 设置节点之间交互的tcp端口,默认是9300。
 
transport.tcp.compress: true
# 设置是否压缩tcp传输时的数据,默认为false,不压缩。
 
http.port: 9200
# 设置对外服务的http端口,默认为9200。
 
http.max_content_length: 100mb
# 设置内容的最大容量,默认100mb
 
http.enabled: false
# 是否使用http协议对外提供服务,默认为true,开启。
 
gateway.type: local
# gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器等。
 
 
cluster.routing.allocation.node_initial_primaries_recoveries: 4
# 初始化数据恢复时,并发恢复线程的个数,默认为4。
 
cluster.routing.allocation.node_concurrent_recoveries: 2
# 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。
 
indices.recovery.max_size_per_sec: 0
# 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。
 
indices.recovery.concurrent_streams: 5
# 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
 
discovery.zen.minimum_master_nodes: 1
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)。7.x版本无效
 
discovery.zen.ping.timeout: 3s
# 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。7.x版本无效
 
discovery.zen.ping.multicast.enabled: false
# 设置是否打开多播发现节点,默认是true。7.x版本无效
 
discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。7.x版本无效
 
discovery.seed_hosts
# 在启动此节点时传递要执行发现的主机的初始列表
cluster.initial_master_nodes
# 使用初始的一组符合主节点条件的节点引导集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值