这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
首先是docker镜像加速,没有加速手段的下载镜像体验会很差,我这边里用的是七牛的镜像加速(https://reg-mirror.qiniu.com),您可以按个人喜好自行配
如果您的环境是Linux,注意要做以下操作,否则es可能会启动失败
1 用编辑工具打开文件/etc/sysctl.conf
2 在尾部添加一行配置vm.max_map_count = 262144,如果已存在就修改,数值不能低于262144
3 修改保存,然后执行命令sudo sysctl -p使其立即生效
先创建一个docker网络
docker network create elastic
创建es容器,若本地没有镜像会自动下载,为了省内存,我这里设置ES容器内的java进程只用到1024M内存,您可以根据自己电脑情况调整
docker run <br /> --name es01 <br /> --net elastic <br /> -p 9200:9200 <br /> -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" <br /> -idt elasticsearch:8.2.2
进入容器
docker exec -it es01 /bin/bash
重置密码
bin/elasticsearch-reset-password -u elastic
提示是否重置,输入y,控制台会打印新密码,请记住这个密码,稍后要用到
Password for the [elastic] user successfully reset.
New value: 3_J35UWr2sIUkyxxxxxx
现在验证elastic能否正常响应
在chrome浏览器的地址栏输入https://localhost:9200
此时浏览器会弹出安全提示,如下图,这时候不要用鼠标去点任何地方,直接在键盘上输入thisisunsafe,然后回车
一行命令完成部署
docker run <br /> --name kibana <br /> --net elastic <br /> -p 5601:5601 <br /> -idt kibana:8.2.2
生成token,kibana连接es的时候要用到
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
控制台会生成一长串文本,请保存下来,这是稍后给kibana用来连接es的token
浏览器访问http://localhost:5601/,会弹出输入窗口,如下图,在文本框内输入刚才生成的token内容,再点击Configure Elastic按钮
在控制台输入以下命令,顺利拿到验证码
docker exec -it kibana bin/kibana-verification-code
回到网页输入验证码,可以看到初始化页面
目前es服务是单节点,有时候需要对单节点进行扩容,加入新的机器以提升es服务的性能、存储、可用性等,docker下可以很方便的进行扩容,接下来一起试试
与kibana能够访问es类似,新机器加入当前es服务也需要授权token,生成token的命令如下,请在控制台执行
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
拿到控制台生产的token后(30分钟有效期),执行以下命令即可创建一个新的es容器,与原先的es组成集群,原有的数据会保留,注意将xxxxxx替换成刚刚生成的token
docker run <br /> -e ENROLLMENT_TOKEN="xxxxxx" <br /> -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" <br /> --name es02 <br /> --net elastic <br /> -idt elasticsearch:8.2.2
在eshead上可以看到新增的节点
咱们先用命令行做一些最基本的操作,然后再考虑用kibana
由于es开方的https服务,所以首先把证书从容器中导出来,后面的curl请求都要指定这个证书
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
当前目录下新增名为http_ca.crt的文件,就是安全证书了,试试能不能用,控制台输入以下命令,注意把xxxxxx换成您自己的密码
curl --cacert http_ca.crt -u elastic:xxxxxx https://localhost:9200
控制台输出以下信息,证明外部访问es已经成功
❯ curl --cacert http_ca.crt -u elastic:xxxxxx https://localhost:9200
{
"name" : "279acdab6c7f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "whfRDTzCQym_jwx2OrMgKg",
"version" : {
"number" : "8.2.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "9876968ef3c745186b94fdabd4483e01499224ef",
"build_date" : "2022-05-25T15:47:06.259735307Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
建一个索引试试,此索引名为my-book,有六个字段
curl -X PUT "https://localhost:9200/my-book?pretty" <br />
--cacert http_ca.crt <br />
-u elastic:xxxxxx <br />
-H 'Content-Type: application/json' <br />
-d'
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"line_id": {
"type": "long"
},
"line_number": {
"type": "keyword"
},
"play_name": {
"type": "keyword"
},
"speaker": {
"type": "keyword"
},
"speech_number": {
"type": "long"
},
"text_entry": {
"type": "text"
}
}
}
}
'
收到响应
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my-book"
}
eshead插件也能看到索引创建成功
用GET命令获取索引信息试试,如下,符合预期
❯ curl -X GET <br />
https://localhost:9200/my-book\?pretty <br />
--cacert http_ca.crt <br />
-u elastic:m9ZRFl9wCIiVkLudRopy
{
"my-book" : {
"aliases" : { },
"mappings" : {
"properties" : {
"line_id" : {
"type" : "long"
},
"line_number" : {
"type" : "keyword"
},
"play_name" : {
"type" : "keyword"
},
"speaker" : {
"type" : "keyword"
},
"speech_number" : {
"type" : "long"
},
"text_entry" : {
"type" : "text"
}
}
},
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "1",
"provided_name" : "my-book",
"creation_date" : "1653811101586",
"number_of_replicas" : "1",
"uuid" : "zX8kWS_IQ-ymdI7vYLOjew",
"version" : {
"created" : "8020299"
}
}
}
}
}
再试试批量导入一笔数据,从这个地址下载数据文件:https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/shakespeare_for_es_822.json
下载完毕后,执行以下命令,就会开始批量导入的操作
curl -H 'Content-Type: application/x-ndjson' <br /> --cacert http_ca.crt <br /> -u elastic:m9ZRFl9wCIiVkLudRopy <br /> -s -XPOST https://localhost:9200/_bulk <br /> --data-binary @shakespeare_only_one_type.json
导入成功后,用eshead可以看到每条记录的详细信息
接下来试试kibana
手机扫一扫
移动阅读更方便
你可能感兴趣的文章