1. 介绍
Elasticesearch 是一个高度可伸缩的开源全文搜索引擎。Elasticsearch让你可以快速。实时地存储、搜索和分析大量数据,它通常作为互联网应用的内部搜索引擎,为需要复杂搜索功能的应用提供支持。
ElaticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
2. 特点:
-
天然索引:ES所有数据是默认进行索引的,这点和MySQL正好相反,Mysql是默认不加索引,要加索引必须特别说明,ES只有不加索引才需要说明。
-
而ES使用的是倒排索引和MySQL的B+Tree索引不同
-
天然分区
-
天然集群
3. 安装:
-
安装文件介绍:
a. elasticsearch-6.6.0.tar.gz 这个是安装包
-
解压安装:
a. 解压
tar -zxvf elasticsearch-6.6.0.tar.gz -C /opt/module/
b.在/opt/module/elasticsearch-6.6.0/config目录中找到elasticsearch.yml文件
-
配置集群名称
#cluster.name: my-application,消除注释,便修改名称,种类我修改为:my-es
-
修改节点名称,将#node.name: node-1的注释去掉
-
把boostrap自检程序关闭:将#bootstrap.memory_lock: true的注释去掉,并将true改为false,注意这里true前面的空格一定不可以删掉。然后再在这句话的下面增加bootstrap.system_call_filter: false
-
修改网络的地址:将#network.host: 192.168.0.1的注释去掉,然后将ip修改为这里的主机名,这里修改为hadoop101
-
自发现配置,新节点向集群报到的主机名:在#discovery.zen.ping.unicast.hosts: ["host1", "host2"]的中括号中修改为自己的节点名称,这里修改为:discovery.zen.ping.unicast.hosts: ["hadoop101", "hadoop102", "hadoop103"]
c. 修改内存大小,默认是1G内存,由于虚拟机内存较小,因此修改下一点,修改的文件为:jvm.options,将文件中-Xms1g, Xmx1g的“1g”修改为“520m”
d. 分发到hadoop102,hadoop103中
xsync elasticsearch-6.6.0/
e.分别在hadoop101,hadoop102修改如下内容,将网络地址修改为hadoop102,将节点名称修改为node-2,这些在上述都有所配置。
f. 启动:
a. 单机启动:bin/elasticsearch
报错为:
-
-
解决办法和原因:
原因 系统允许 Elasticsearch 打开的最大文件数需要修改成 65536 解决 sudo vim /etc/security/limits.conf 最文件的最后添加内容
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 65536
注意:“*” 不要省略掉 分发文件到hadoop102,hadoop103中 sudo /home/sea/bin/xsync /etc/security/limits.conf
b. 问题2:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
原因 一个进程可以拥有的虚拟内存区域的数量。 解决 sudo vim /etc/sysctl.conf 在文件最后添加一行
vm.max_map_count=262144
即可永久修改 分发文件 sudo /home/sea/bin/xsync /etc/sysctl.conf
重启虚拟机
g. 检测是否安装成功的方法有:
测试方式 1:curl http://hadoop101:9200/_cat/nodes?v
测试方式 2:在浏览器中,输入 http://hadoop101:9200/查看效
-
编写脚本启动es
#!/bin/bash es_home=/opt/module/elasticsearch-6.6.0 case $1 in "start" ){ for i in hadoop101 hadoop102 hadoop103; do echo "==============$i上启动=============" ssh $i "${es_home}/bin/elasticsearch >/dev/null 2>&1 &" done };; "stop"){ for i in hadoop101 hadoop102 hadoop103; do echo "==============$i上停止=============" ssh $i "ps -ef|grep $es_home | grep -v grep|awk '{print \$2}'|xargs kill" >/dev/null 2>&1 #statements done };; esac