单实例安装
下载地址:https://www.elastic.co/downloads/elasticsearch
1.解压
2. ./bin/elasticsearch
可能会出现的问题:
1.max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
这个问题是无法创建本地文件,用户最大可创建文件数太小
解决:只需要修改创建文件的最大数目为65536就行了
vim /etc/security/limits.conf
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
保存、退出、重新登录才可生效
soft nproc:可打开的文件描述符的最大数(软限制)
hard nproc:可打开的文件描述符的最大数(硬限制)
soft nofile:单个用户可用的最大进程数量(软限制)
hard nofile:单个用户可用的最大进程数量(硬限制)
2.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
虚拟内存太小
sudo vim /etc/sysctl.conf
vm.max_map_count=262144
执行命令:
sudo sysctl -p
3.Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=’Cannot allocate memory’ (errno=12)
jvm需要分配的内存太大
vim config/jvm.options
-Xms2g
-Xmx2g
该为:
-Xms100m
-Xmx100m
4.max number of threads [1024] for user [es] likely too low, increase to at least [2048]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件
成功启动:
vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
修改为
* soft nproc 2048
配置文件解析:
Ø Cluster
cluster.name
集群名称,如果有多个集群,那么每个集群名就得是唯一的。
Ø Node
1.node.data
集群中的节点名称,比如前面说的82、83、84三台机子每台都有一个名称,你也可以不设这个名称,默认的集群启动时会自己给每个节点初始化一个名称,但强烈建议这里还是由自己设置比较好。
2.node.master
该节点是否是master,true表示是的,false表示否,默认是true.
3.node.data
该节点是否存储数据,默认true表示是的。
说明:对于上面两个节点,如果你希望该节点只是一个master,但不存储数据,则应当设置为:
node.master: true
node.data: false
如果你希望该节点只存储数据,但不是一个master,则应该设置:
node.master: false
node.data: true
如果你既不希望该节点为一个master,也不想它存储数据,则应该设置为:
node.master: false
node.data: false
这种情况一般是你希望该节点仅仅是作为一个搜索负载均衡器,比如从各节点得到数据,聚合结果等。
Ø Index
1. index.number_of_shards
设置一个索引被分成的分片数,默认是5
2.index.number_of_replicas
设置一个索引有几个拷贝,默认为1。拷贝指的是其它节点对该节点的拷贝,比如在84上创建了一个索引,那么这个拷贝会存在于82和83上,这是一个分布式的属性。
拷贝越多,则搜索性能越佳,而分片越多则索引创建性能越好。
Ø Paths
1.path.conf
配置文件目录,默认为es根目录下的config目录。
2.path.data
索引存储路径,默认为es根目录下的data目录,可以有多个存储路径,各存储路径用逗号隔开,如:path.data: /path/to/data1,/path/to/data2
3.path.work
临时文件存放目录,默认为es根目录下的work目录
4.path.logs
日志文件存放目录,默认为es根目录下的logs目录。
5.path.plugins
插件的安装目录,默认为es根目录下的plugins目录。
Ø Network And HTTP
1.network.bind_host
Es节点绑定的地址,为一个ip地址(IPv4或IPv6)
2.network.publish_host
Es发布的地址,其它节点通过这个地址与其进行通信
3.network.host
该节点网络地址,也是一个ip地址,如果设置了该属性,则network.bind_host与network.publish_host都不用再设置了,比如我这里三台机子设置的值分别为:
118.200.108.82、118.200.108.83、118.200.108.84。
4.transport.tcp.port
节点之间通信的端口,默认为9300,在我们应用程序中调用es的方法提交索引创建时也是使用的这个端口。
5.http.port
http访问端口,默认是9200,通过这个端口,调用方可以索引查询请求。
6.http.max_content_length
设置内容的最大容量,默认是100MB
7.http.enabled
是否禁止http访问,默认是false。
Ø Discovery
1 discovery.zen.minimum_master_nodes
设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)。
2 discovery.zen.ping.timeout
设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错
3 discovery.zen.ping.multicast.enabled
设置是否打开多播来发现来发现节点,默认是true
4 discovery.zen.ping.unicast.hosts
head插件安装:
elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp
https://github.com/mobz/elasticsearch-head
es-head主要有三个方面的操作:
1.显示集群的拓扑,并且能够执行索引和节点级别操作
2.搜索接口能够查询集群中原始json或表格格式的检索数据
3.能够快速访问并显示集群的状态
4.有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果;
A.请求方法(get、put、post、delete),查询json数据,节点和路径
B.支持JSON验证器
C.支持重复请求计时器
D.支持使用javascript表达式变换结果
F.收集结果的能力随着时间的推移(使用定时器),或比较的结果
E.能力图表转换后的结果在一个简单的条形图(包括时间序列)
node.js安装:
https://nodejs.org/zh-cn/download/
export NODE_HOM=/home/hadoop/app/node-v8.9.3-linux-x64/
export PATH=$PATH:$NODE_HOME/bin
检验:
node -v
npm 包管理工具
安装head:
解压
cd 主目录
npm install //安装需要的包
npm run start //启动
es和head是两个进程,通信需要跨域
修改:es的配置文件:elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
bin/elasticsearch -d 后台启动
访问esweb届界面: http://ip:9200/
访问headweb界面: http://ip:9100/
集群安装:
集群安装:
master:
vim config/elasticsearch.yml
#需要与head连接设置
http.cors.enabled: true
http.cors.allow-origin: "*"
#集群的名字,节点的名字,是否为master节点
cluster.name: ESCluster
node.name: master
node.master: true
#绑定的ip,master的所在的ip
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["0.0.0.0"]
slave:
cluster.name: ESCluster
node.name: slave1
node.master: false
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["node2"]