es环境搭建(docker版)
目录
Es单机版
1.创建一个简单的单机版本
docker run --name es -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.8.9
2.创建存放配置的文件夹
mkdir -p /usr/local/myData/es/config
mkdir -p /usr/local/myData/es/data
mkdir -p /usr/local/myData/es/plugins
3.复制对应的文件夹到指定目录
### 这样是为了方便修改文件如,不用每次都进入docker容器
--------
docker cp es:/usr/share/elasticsearch/config/ /usr/local/myData/es/
docker cp es:/usr/share/elasticsearch/data/ /usr/local/myData/es/
docker cp es:/usr/share/elasticsearch/plugins/ /usr/local/myData/es/
4.删除当前单机es
docker rm -f es
5.启动容器
### 这里的内存大小根据自己的实际情况设置
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /usr/local/myData/es/config/:/usr/share/elasticsearch/config/ \
-v /usr/local/myData/es/plugins:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data:/usr/share/elasticsearch/data \
--name es elasticsearch:6.8.9
6.Kibana容器创建并连接Es
docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.58.222:9200 -p 5601:5601 -d kibana:6.8.9
Es集群版
1.创建文件夹
mkdir -p /usr/local/myData/es/config
mkdir -p /usr/local/myData/es/data1
mkdir -p /usr/local/myData/es/plugin1
mkdir -p /usr/local/myData/es/data2
mkdir -p /usr/local/myData/es/plugin2
2.创建配置文件
cd /usr/local/myData/es/config
touch es1.yml
vi es1.yml
touch es2.yml
vi es2.yml
Es1:
-----------
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.58.222
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.58.222:9300","192.168.212.252192.168.58.2229301"]
discovery.zen.minimum_master_nodes: 1
Es2:
-----------
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.58.222
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.58.222:9300","192.168.212.252192.168.58.2229301"]
discovery.zen.minimum_master_nodes: 1
3.启动容器
容器1
--------------
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d -p 9200:9200 -p 9300:9300 \
-v /usr/local/myData/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/myData/es/plugins1:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data1:/usr/share/elasticsearch/data \
--name es01 elasticsearch:6.8.9
容器2
--------------
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d -p 9201:9201 -p 9301:9301 \
-v /usr/local/myData/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/myData/es/plugins2:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data2:/usr/share/elasticsearch/data \
--name es02 elasticsearch:6.8.9
4.创建kibana
docker run --name kibana -p 5601:5601 -it -d -e ELASTICSEARCH_URL=http://192.168.58.222:9200 kibana:6.8.9
测试运行结果
http://192.168.58.222:5601/app/kibana
5.集成IK分词器
- 集群版本的es下,放置在对应的plugin文件夹下
- 使用postman测试ik分词器(json格式)
http://192.168.58.222:9200/_analyze
发送的body如下
------------
{
"analyzer": "ik_smart",
"text": "苹果"
}
文档映射
预定义文档,使得IK分词器生效
进行文档映射,只有预先定义文档类型,指定对应的ik分词器,才能使得分词器插件生效(最后的文档结构,可以使用springboot整合es后,先用springboot推送到es,然后再替换成ik分词器)
# 获取结构
GET /goods/_mapping
# 删除文档
DELETE /goods
#定义索引
PUT /goods
#定义文档结构,指定ik分词器
POST /goods/_mapping/goods
{
"goods": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"attribute_list": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"category_id": {
"type": "long"
},
"created_time": {
"type": "date"
},
"detail": {
"type": "text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
},
"id": {
"type": "long"
},
"main_image": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
},
"revision": {
"type": "long"
},
"status": {
"type": "long"
},
"sub_images": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"subtitle": {
"type": "text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
},
"updated_time": {
"type": "date"
}
}
}
}
ES同时支持拼音和中文分词
- 下载拼音分词器并解压到插件包
- 自定义分词器
DELETE /goods
PUT /goods
{
"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
}
}
}
}
}
- 指定文档使用的分词器
POST /goods/_mapping/goods
{
"goods": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"attribute_list": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"category_id": {
"type": "long"
},
"created_time": {
"type": "date"
},
"detail": {
"type": "text",
"analyzer":"ik_smart_pinyin",
"search_analyzer":"ik_smart_pinyin"
},
"id": {
"type": "long"
},
"main_image": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"analyzer":"ik_smart_pinyin",
"search_analyzer":"ik_smart_pinyin"
},
"revision": {
"type": "long"
},
"status": {
"type": "long"
},
"sub_images": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"subtitle": {
"type": "text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
},
"updated_time": {
"type": "date"
}
}
}
}

浙公网安备 33010602011771号