Elaticsearch7.7.0
Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。
基本概念有:Cluster 集群、Node节点、Index索引、Document文档、Shards & Replicas分片与副本等
elasticsearch的优势:
- 分布式:横向扩展非常灵活
- 全文检索:基于lucene的强大的全文检索能力;
- 近实时搜索和分析:数据进入ES,可达到近实时搜索,还可进行聚合分析
- 高可用:容错机制,自动发现新的或失败的节点,重组和重新平衡数据
- 模式自由:ES的动态mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。
- RESTful API:JSON + HTTP
1-安装Elaticsearch
1.1-下载
Elaticsearch7.7.0下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz
Elatic下工具和版本下载中心: https://elasticsearch.cn/download/
1.2-解压
解压elasticsearch-7.7.0-linux-x86_64.tar.gz得到elasticsearch-7.7.0文件夹
tar -zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz
elasticsearch-7.7.0文件夹下内容:
- bin/ 存放一些脚本文件,比如启动文件、安装插件的脚本等
- config/ 配置文件目录,重要的配置文件我们接下来总结一下
- data/ 数据文件
- jdk/ java运行环境
- lib/ java类库
- logs/ 日志
- modules/
- plugins/ 包含所有安装的插件
1.3-为elasticsearch新增用户
ES在启动的时候是不允许使用root账户的,所以我们要新建一个elasticsearch用户
[root@zxone elk]# useradd esuser ##新增esuser用户
[root@zxone elasticsearch-7.7.0]# chown esuser:esuser -R /home/elk/elasticsearch-7.7.0 ##授权esuser用户权限
[root@zxone elasticsearch-7.7.0]# su - esuser ##切换到esuer用户
1.4-系统配置
启动ES之前需要修改LINUX的系统配置
1.4.1-关闭swapping
临时关闭方案:
sudo swapoff -a
长久关闭方案:
vim /etc/fstab #注释掉所有的swap相关的行,永久禁用
1.4.2-ulimit调整和线程的数量
vim /etc/security/limits.conf
在文件的最后添加
esuser - nofile 65535
esuser - nproc 4096
然后保存退出。
1.4.3-调整mmapfs的数值
vim /etc/sysctl.conf
vm.max_map_count=262144 #永久修改
sysctl -p #执行该命令新增的参数才会生效
1.4.4-配置集群参数
单机也可以算一个集群,不过只有一个机器而已。放开注释即可:
cluster.name: my-application
node.name: node-1
node.attr.rack: r1
cluster.initial_master_nodes: ["node-1"] #有时候报如下错误时,配置此参数
ERROR: [1] bootstrap checks failed [1]: 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
1.5-启动ES
[esuser@zxone elasticsearch-7.7.0]$ ./bin/elasticsearch
启动ES出现错误:
(1)处理JDK版本问题:
因为elasticsearch-7.7.0要求JDK版本是11,现在LINUX安装的是JDK版本是1.8,elasticsearch是自带JDK的。
将elasticsearch-env中的下面内容修改一下,是ES使用自带的JDK
# now set the path to java
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
修改成:
# now set the path to java
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$ES_HOME/jdk/bin/java"
JAVA_TYPE="bundled jdk"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
然后再启动ES,JDK环境问题处理完成。
(2)内存太小问题处理error='Not enough space'
该问题是因为ES默认的需要内存大小超过当前运行ES系统的内存大小,需要修改ES的默认内存大小即可。
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Not enough space' (errno=12)
at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:139)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
修改elasticsearch-7.7.0/config/jvm.options 中的Xms和Xmx参数(根据自己电脑配置修改)
-Xms128m
-Xmx128m
此时再启动ES,则出现如下日志,则说明成功启动ES
换一个窗口进行验证:curl 127.0.0.1:9200 出现以下信息ES成功启动。
在浏览器中输入: IP:9200 无法获取到信息
-
原因一:未开通9200端口
-
原因二:在LINUX安装的ES需要修改elasticsearch-7.7.0/config/jvm.options/elasticsearch.yml中的network.host=0.0.0.0 ,不然只能本机ES,其他电脑无法连接ES。
network.host= 0.0.0.0
修改完成之后重启ES,浏览器输入:IP:9200 出现如下ES的JSON信息。
{
"name": "node-1",
"cluster_name": "my-application",
"cluster_uuid": "tt6QC-ZrQAKRvblTZinmpg",
"version": {
"number": "7.7.0",
"build_flavor": "default",
"build_type": "tar",
"build_hash": "81a1e9eda8e6183f5237786246f6dced26a10eaf",
"build_date": "2020-05-12T02:01:37.602180Z",
"build_snapshot": false,
"lucene_version": "8.5.1",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}