前言
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力
一、Elasticsearch是什么?
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力
1、官网
https://www.elastic.co/elasticsearch/
2、几个概念
1)索引----类比mysql中的数据库
2)类型----类比mysql中的数据表
3)文档----类比mysql中的数据
4)属性----类比mysql中的字段名
如下图
5)倒排索引
二、docker安装
1、下载镜像文件
docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据
1)查看正在运行
docker ps
正在运行有nacos、redis、mysql
2)看存在哪些镜像:redis、mysql、nacos
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 14 months ago 113MB
mysql 5.7 c20987f18b13 14 months ago 448MB
nacos/nacos-server 1.1.3 8cb51161b062 3 years ago 700MB
3)下载镜像 docker pull elasticsearch:7.4.2
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# docker pull elasticsearch:7.4.2
7.4.2: Pulling from library/elasticsearch
d8d02d457314: Pull complete
f26fec8fc1eb: Pull complete
8177ad1fe56d: Pull complete
d8fdf75b73c1: Pull complete
47ac89c1da81: Pull complete
fc8e09b48887: Pull complete
367b97f47d5c: Pull complete
Digest: sha256:543bf7a3d61781bad337d31e6cc5895f16b55aed4da48f40c346352420927f74
Status: Downloaded newer image for elasticsearch:7.4.2
docker.io/library/elasticsearch:7.4.2
4)docker查看下载的镜像文件
5)下载可视化检索镜像
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# docker pull kibana:7.4.2
7.4.2: Pulling from library/kibana
d8d02d457314: Already exists
bc64069ca967: Pull complete
c7aae8f7d300: Pull complete
8da0971e3b41: Pull complete
58ea4bb2901c: Pull complete
b1e21d4c2a7e: Pull complete
3953eac632cb: Pull complete
5f4406500758: Pull complete
340d85e0d1c7: Pull complete
1768564d16fb: Pull complete
Digest: sha256:355f9c979dc9cdac3ff9a75a817b8b7660575e492bf7dbe796e705168f167efc
Status: Downloaded newer image for kibana:7.4.2
docker.io/library/kibana:7.4.2
6)查看镜像文件elasticsearch、kibana 统一版本为7.4.2
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 14 months ago 113MB
mysql 5.7 c20987f18b13 14 months ago 448MB
kibana 7.4.2 230d3ded1abc 3 years ago 1.1GB
elasticsearch 7.4.2 b1179d41a7b4 3 years ago 855MB
nacos/nacos-server 1.1.3 8cb51161b062 3 years ago 700MB
7)查看可用内存(available)
free -m
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# free -m
total used free shared buff/cache available
Mem: 15884 1627 5338 0 8918 13926
Swap: 0 0 0
8)创建实例elasticsearch(即安装)
创建两个文件夹config、data(方便es挂载,以后操作不用进入es内部)
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
进入/mydata 文件夹,查看创建的文件夹
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# cd /mydata
[root@iZ8vb2zqmrxey54wknbv7xZ mydata]# ls -l
total 12
drwxr-xr-x 4 root root 4096 Feb 27 22:23 elasticsearch
drwxr-xr-x 5 root root 4096 Mar 27 2022 mysql
drwxr-xr-x 4 root root 4096 Mar 27 2022 redis
进入文件夹,查看是否创建好两个文件夹,进入配置的文件夹
[root@iZ8vb2zqmrxey54wknbv7xZ mydata]# cd elasticsearch/
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# ls
config data
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# cd config
在配置文件夹-写入配置内容
[root@iZ8vb2zqmrxey54wknbv7xZ config]# echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
[root@iZ8vb2zqmrxey54wknbv7xZ config]# ls
elasticsearch.yml
查看配置内容
[root@iZ8vb2zqmrxey54wknbv7xZ config]# cat elasticsearch.yml
http.host: 0.0.0.0
[root@iZ8vb2zqmrxey54wknbv7xZ config]# ll
total 4
-rw-r--r-- 1 root root 19 Feb 27 22:27 elasticsearch.yml
#1、--name 起名字为elasticsearch ;-p 暴露两个端口,9200是http,restfulapi给es发请求的端口;9300是es集群节点之间通信接口;\ 为换行
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
#2、运行模式:单节点
> -e "discovery.type=single-node" \
#3、指定es占用虚拟机内存 初始64m,最大为128m;到公司可以分配大点
> -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
#4、-v 把es内部文件或者文件夹挂载(快捷方式)到外部:elasticsearch.yml、/data、/plugins(插件)
> -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
> -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
> -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
#5、-d 后台运行 elasticsearch:7.4.2镜像
> -d elasticsearch:7.4.2
如果无法启动,检查日志
[root@iZ8vb2zqmrxey54wknbv7xZ ~]# docker logs elasticsearch
结果
AccessDeniedException[/usr/share/elasticsearch/data/nodes]路径访问权限问题
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
{"type": "server", "timestamp": "2023-02-28T01:01:48,145Z", "level": "WARN", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "elasticsearch", "node.name": "f5d627bec026", "message": "uncaught exception in thread [main]",
"stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
解决办法
添加权限命令
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# ll
total 12
drwxr-xr-x 2 root root 4096 Feb 27 22:27 config
drwxr-xr-x 2 root root 4096 Feb 27 22:23 data
drwxr-xr-x 2 root root 4096 Feb 28 09:01 plugins
# 给/mydata/elasticsearch添加权限命令 -R为递归
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# chmod -R 777 /mydata/elasticsearch
#查看是否添加成功
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# ll
total 12
drwxrwxrwx 2 root root 4096 Feb 27 22:27 config
drwxrwxrwx 2 root root 4096 Feb 27 22:23 data
drwxrwxrwx 2 root root 4096 Feb 28 09:01 plugins
查看es是否正在启动,发现已经停用
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f5d627bec026 elasticsearch:7.4.2 "/usr/local/bin/dock…" 25 minutes ago Exited (1) 25 minutes ago elasticsearch
cf427f45848a 8cb51161b062 "bin/docker-startup.…" 5 months ago Up 5 months 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp nacos
c903efec3de1 redis "docker-entrypoint.s…" 11 months ago Up 11 months 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
3f34054e5771 mysql:5.7 "docker-entrypoint.s…" 11 months ago Up 6 months 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
重启es
#重启es
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# docker start f5d
f5d
#查看es是否启动
[root@iZ8vb2zqmrxey54wknbv7xZ elasticsearch]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#显示es已经启动
f5d627bec026 elasticsearch:7.4.2 "/usr/local/bin/dock…" 27 minutes ago Up 5 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
cf427f45848a 8cb51161b062 "bin/docker-startup.…" 5 months ago Up 5 months 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp nacos
c903efec3de1 redis "docker-entrypoint.s…" 11 months ago Up 11 months 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
3f34054e5771 mysql:5.7 "docker-entrypoint.s…" 11 months ago Up 6 months 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
过段时间检查一下es是否还在启动
docker ps
检查es的日志是否报错
docker logs elasticsearch
浏览器访问es判断是否正常运行es
http://esc的公网ip:9200/
注意:需要云服务器esc配置安全组(外网访问端口)