Docker 安装 ES
因为是测试需要,所以跟公司版本保持一致即可
sudo docker pull elasticsearch:7.4.2
sudo mkdir -p /data/es_home/config/config
sudo mkdir -p /data/es_home/config/data
sudo mkdir -p /data/es_home/config/plugins
echo "http.host: 0.0.0.0" >> /data/es_home/config/elasticsearch.yml
sudo chmod -R 777 /data/es_home/
sudo docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-v /data/es_home/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/es_home/data:/usr/share/elasticsearch/data \
-v /data/es_home/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
常用命令
docker ps 查看是否启动
docker logs elasticsearch 启动日志查询
docker restart elasticsearch 重启
docker exec -it elasticsearch bash 进入
验证是否成功,打开链接 http://你的ip地址:9200
Docker 安装 Kibana
相当于 es 的可视化,常用功能,监控,控制台等
sudo docker pull kibana:7.4.2
sudo mkdir -p /data/kibana_home # 创建挂载配置目录
sudo chmod 777 /data/kibana_home # 赋值读写执行权限
sudo echo "server.host: 0.0.0.0" >> /data/kibana_home/kibana.yml
sudo echo "elasticsearch.hosts: http://0.0.0.0:9200" >> /data/kibana_home/kibana.yml
# 0.0.0.0 表示你的es容器ip,查看es容器的ip:docker inspect es容器id | grep IPAddress
sudo docker run --name kibana -v /data/kibana_home/kibana.yml:/usr/share/kibana/config/kibana.yml -p 5601:5601 -d kibana:7.4.2
验证是否成功,打开页面:http://你的ip地址:5601/app/kibana,如果显示如下,则为成功
安装插件
安装 ik 分词器插件和拼音分词器插件,请注意,版本需要和 es 版本保持一致
ik 分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik
拼音分词器下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin
文末提供下载
下载后解压至 /data/es_home/config/plugins 文件夹内,重启 es 即可
创建分词器
# 删除索引
DELETE /my_index
# 新建索引 my_index,并新建拼音分词器 ik_smart_pinyin、ik_max_word_pinyin
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"ik_smart_pinyin": {
"type": "custom",
"tokenizer": "ik_smart",
"filter": ["my_pinyin", "word_delimiter"]
},
"ik_max_word_pinyin": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["my_pinyin", "word_delimiter"]
}
},
"filter": {
"my_pinyin": {
"type" : "pinyin",
"keep_separate_first_letter" : true,
"keep_full_pinyin" : true,
"keep_original" : true,
"limit_first_letter_length" : 16,
"lowercase" : true,
"remove_duplicated_term" : true
}
}
}
}
}
# 新建字段,并设置字段分词器为拼音
PUT /my_index/_mapping
{
"properties" : {
"name" : {
"type": "text",
"analyzer": "ik_smart_pinyin"
}
}
}
# 查询索引结构
GET /my_index/_mapping
# 新建测试数据
POST /my_index/_bulk
{ "index": { "_id": 1}}
{ "name": "张三"}
{ "index": { "_id": 2}}
{ "name": "张四"}
{ "index": { "_id": 3}}
{ "name": "李四"}
{ "index": { "_id": 4}}
{ "name": "亚特兰蒂斯"}
{ "index": { "_id": 5}}
{ "name": "Club Med 丽江度假村"}
{ "index": { "_id": 6}}
{ "name": "Club Med Joyview 安吉度假村村"}
{ "index": { "_id": 7}}
{ "name": "亚特"}
{ "index": { "_id": 8}}
{ "name": "蒂斯"}
# 测试是否匹配
GET /my_index/_search
{
"query": {
"match": {
"name": "亚特兰蒂斯"
}
}
}
测试效果
扩展
自定义分词,打开 /data/es_home/plugins/analysis-ik/config/IKAnalyzer.cfg.xml,可使用ext_dict,可读取当前文件夹dic文件,一般使用remote_ext_dict,做一个接口让ik远程读取扩展词即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!--<entry key="remote_ext_dict"></entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>