# 创建网络
docker network create es-net
# 关闭虚拟机后,查看局域网络(已配置过,重启后不影响)
docker network ls
# 导入数据
docker load -i es.tar
# 运行docker命令,部署单点es
docker run -d \
--name es \
-e "ES\_JAVA\_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
# 重启后,重启容器
docker start es
# 输入地址加端口即可访问es
http://192.168.226.139:9200
# 导入数据
docker load -i kibana.tar
# 运行docker命令,部署kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH\_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
# 重启后重启容器
docker start kibana
# 输入地址加端口即可访问kibana
http://192.168.226.139:5601
ps:(1)重启后只需要重启容器即可;(2)如果没有删除容器,重新运行docker命令部署会报名字重复错误;(3)如果不删除容器,想修改名称创建容器的话,需要在ess和kibana中的请求连接要同步,否则会报Kibana server is not ready yet
的问题。
# 在kibana中测试分词器
# english-默认分词器、standard-标准分词器
POST /\_analyze
{
"text": "好好学习,天天向上",
"analyzer": "english"
}
# 安装ik分词器
# 查看数据卷elasticsearch的plugins目录位置
docker volume inspect es-plugins
# 到这个目录下
cd /var/lib/docker/volumes/es-plugins/\_data
# 上传elasticsearch-analysis-ik-7.12.1.zip,然后解压
unzip elasticsearch-analysis-ik-7.12.1.zip
# 不太建议上面的方式,我试过发现启动会报错,后面改了很久都是报错,不知道哪里的配置文件被修改了,然后恢复快照重新来过
# 使用FileZillar直接传输Windows下解压的文件夹,结果是成功的
# 重启es容器
docker restart es
# 查看es日志
docker logs -f es
# 测试ik分词器
# IK分词器包含两种模式
# ik\_smart:最少切分 -- 被搜索的概论低-粗粒度
# ik\_max\_word:最细切分 -- 内存占用高-细粒度
GET /\_analyze
{
"analyzer": "ik\_max\_word",
"text": "好好学习天天向上,奥利给,噢噢点赞"
}
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑
# 打开IK分词器config目录,在IKAnalyzer.cfg.xml配置文件内容添加
# 用户可以在这里配置自己的扩展字典
<entry key="ext\_dict">ext.dic</entry>
#用户可以在这里配置自己的扩展停止词字典 \*\*\* 添加停用词词典
<entry key="ext\_stopwords">stopword.dic</entry>
# 新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改
奥利给
# 在 stopword.dic 添加停用词
噢噢
# 修改过看效果,重启es容器即可
docker restart es
# 查看 日志
docker logs -f es
# DSL语法
# 创建索引库名
PUT /索引库名
# 创建索引库的DSL语法例子
PUT /a
{
"mappings": {
"properties": {
"info": {
"type": "text",
"analyzer": "ik\_smart"
},
"name":{
"type": "object",
"properties": {
"firstName": {
"type": "keyword",
"index": false
}
}
}
}
}
}
# 查看索引库
GET /索引库名
# 删除索引库
DELETE /索引库名
# 索引库和mapping一旦创建就无法修改,但是可以添加新的字段
PUT /索引库名/\_mapping
{
"properties":{
"新字段名":{
"type":"integer"
}
}
}
# 插入文档
POST /索引库名/\_doc/文档id
# 查看文档
GET /索引库名/\_doc/文档id
# 删除文档
DELETE /索引库名/\_doc/文档id
# 插入的DSL语法例子 -- 索引库名与上方创建相同
POST /a/\_doc/1
{
"info": "好好学习天天向上",
"name": {
"firstName": "小",
"lastName": "盈"
}
}
# 修改文档 -- 全量修改,会删除旧文档,添加新文档
PUT /索引库名/\_doc/文档id
PUT /a/\_doc/1
{
"info": "好好学习天天向上",
"email": "45543563.qq.com",
"name": {
"firstName": "小",
"lastName": "盈"
}
}
# 局部修改,修改指定字段值 -- 只能修改一个指段
POST /索引库名/\_update/文档id
POST /a/\_update/1
{
"doc":{
"email": "xiaoying@qq.com"
}
}
# 酒店的mapping
PUT /hotel
{
"mappings":{
"properties":{
"id":{
"type": "keyword"
},
"name":{
"type": "text",
"analyzer": "ik\_max\_word",
"copy\_to": "all"
},
"address":{
"type": "keyword",
"index": false
},
"price":{
"type": "integer"
},
"score":{
"type": "integer"
},
"brand":{
"type": "keyword",
"copy\_to": "all"
},
"city":{
"type": "keyword"
},
"starName":{
"type": "keyword"
},
"business":{
"type": "keyword",
"copy\_to": "all"
},
"location":{
"type": "geo\_point"
},
"pic":{
"type": "keyword",
"index": false
},
"all":{
"type": "text",
"analyzer": "ik\_max\_word"
}
}
}
}
记录每一个学习瞬间
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。