放假买个地球仪吧,世界那么大你不但可以看看,还可以转转。
1.准备工作
版本是elasticsearch:7.9.2
这次不讲废话就直接开始吧。首先你得有下面这些东西:
docker
docker
docker
重要的事情说三遍,我发现docker来学习一些东西实在是太方便了。直接pull下来,run一下就完事。最多再配置一下。
1.1压缩包解压安装会遇到的问题
虽然是用docker来学习,但是还是说一下不用docker,直接下载压缩包解压启动会遇到的问题
1.1.1不能用root用户启动
elasticsearch不让用root用户启动,所以你得创建一个用户,并将elasticsearch整个文件夹的所有者给到这个用户。例如我新建一个用户叫xiumu,密码也是xiumu,并将整个elasticsearch文件夹所有者更改为xiumu。
- 新建用户:
$ adduser xiumu
- 设置用户密码:
$ passwd xiumu
- 查看用户所属组:
$ groups xiumu
- 更改文件所有者:
$ chown -R xiumu:xiumu elasticsearch
1.1.2虚拟内存数量太小,出现如下信息
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
把这个参数变大就可以了。
- 查看虚拟内存数量:
$ sysctl -a|grep vm.max_map_count
- 更改虚拟内存数量:
$ sysctl -w vm.max_map_count=262144
1.1.3我还没找到如何重启,如果修改了配置想重启,只能先杀死进程,再启动
1.1.4注意elasticsearch对JDK版本的依赖,JDK版本要正确
1.1.5剩下的可能就是配置的问题,我们在使用docker学习的时候再说
正文
接下来就是重头戏了,我们要使用docker来启动elasticsearch。首先要把elasticsearch:7.9.2拉取下来。我们知道elasticsearch是用来存数据的,那么有没有什么可视化工具来看到这些数据呢?当然有,就是kibana。kibana之于elasticsearch就像Navicat之于MySQL。我们先这么认为就行。所以我们还要再拉取一个kibana:7.9.2。
我们先启动这个elasticsearch。
docker run --name es1 -p 8080:9200 -itd elasticsearch:7.9.2
然后我们就会发现,它没有启动成功,所以我们就看看这个日志,使用这个命令:docker logs es1
。我们就会发现报错的这一行是这个:
看这个意思就是说 [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] 这里面的属性最少要设置一个。那我们就需要写一个配置文件,写上我们的配置信息,然后在启动的时候映射这个配置文件。接下来我们先删掉这个失败的容器docker rm es1
,然后再启动一次。docker实在是方便(心理上的方便)。
首先创建一个elasticsearch.yml文件,然后写上配置信息:
cluster.name: xiumu
node.name: es1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["es1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
启动一个新的容器
$ docker run --name es1 -p 8080:9200 -v /mnt/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -itd elasticsearch:7.9.2
这些配置信息应该能猜出来什么意思吧,就是设置集群名称为xiumu,当前节点名称为es1,初始选举主节点的有es1,毕竟我们就这一个节点。反正我觉得是这么个意思
,然后就是允许跨域什么的。
这次我们就能看到,它启动成功了。我们就用curl -XGET localhost:8080?pretty
检验一下成果。
看到这个就知道我们启动成功了。我们现在来启动可视化工具kibana。启动kibana也是非常的简单:
$ docker run --name kiss -p 8081:5601 -itd kibana:7.9.2
当然光启动这个也是不行的,我们用浏览器访问虚拟机的8081端口就会出现,kibana没有准备好之类的一句话。所以我们需要进入这个kibana的容器里,修改一个配置,让它能够连接到我们的elasticsearch。我们知道容器内部也是有ip地址的,所以我们先看一下刚刚启动的es1的ip地址。
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' es1
我们进入kibana容器内部,然后进入config文件夹,编辑kibana.yml
$ docker exec -it kiss /bin/bash
打印一下编辑后的配置文件是这样的:
最后我们退出到虚拟机,然后用docker重启这个kibana容器就可以了。
通过浏览器访问虚拟机的8081端口号就可以看到我们的kibana了。
这些乱七八糟的,大家先不用关注,只需要关注两个部分就可以了。
第一个Dev Tools很简单,大家打开就知道了,主要是用来练习elasticsearch的各种restful请求。第二个Stack Management就是索引管理了,点开它会进入下面这个页面
点开这个索引管理,我们就可以看到目前elasticsearch中存在的所有索引了。目前我们是什么都没有的。基本上我们的安装已经结束了,历经了千辛万苦,九九八十一难。
elasticsearch中的基本概念
说起索引管理,我们不得不聊一些它的基本概念了,我觉得最神奇的就是这么一句话,索引一个文档到一个索引里。这句话里,第一个索引是个动词,第二个索引是一个名词。确定这不是迷惑人呢???
刚开始我们需要理解"_index" 、"_type"、 “_id"这三个东西,我们可以把它当成,数据库,表,主键。一个document对应着一个id,有了这三个我们就能确定一个唯一的document。不过”_type"要废弃了。
通过kibana的Dev Tools不断练习,来慢慢明白它的一些概念,我就懒得讲了,毕竟最难的安装部分已经解决了。