安装ElasticSearch

镜像拉取

1
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.1

启动容器

1
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" docker.elastic.co/elasticsearch/elasticsearch:7.1.1

相关配置

1
docker exec -it es /bin/bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins

# 进入配置文件夹
cd config

# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users

# 修改配置文件
vi elasticsearch.yml

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

# 退出容器
exit
1
docker restart es

验证

1
curl localhost:9200

安装ik分词器

准备分词器压缩包

1
docker exec -it es /bin/bash
1
mkdir /usr/share/elasticsearch/plugins/ik
1
exit
1
docker cp elasticsearch-analysis-ik-7.1.1.zip es:/usr/share/elasticsearch/plugins/ik/

附:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip

1
scp -i ~/.ssh/xxx.pem -C elasticsearch-analysis-ik-7.1.1.zip {user}@{ip}:/root

解压安装

1
docker exec -it es /bin/bash
1
cd /usr/share/elasticsearch/plugins/ik
1
unzip elasticsearch-analysis-ik-7.1.1.zip
1
rm -rf elasticsearch-analysis-ik-7.1.0.zip
1
exit
1
docker restart es

基于Docker使用elasticsearch-dump

镜像拉取

1
docker pull taskrabbit/elasticsearch-dump

创建文件存放路径

1
mkdir -p /data/

用例

  • 运用 docker run --rm -ti taskrabbit/elasticsearch-dump 调用能力
  • -v <your dumps dir>:<your mount point> 指定外部挂载到 docker 中的目录
  • 三种导出方式:(实际使用方式三选一,三个文件都要导出)
1
2
3
4
5
6
7
8
# 将analyzer分词从es复制到另一个es
docker run --rm -ti elasticdump/elasticsearch-dump --input=http://ip1:9200/index1 --output=http://ip2:9200/index2 --type=analyzer

# 将mapping从index复制到另一个index
docker run --rm -ti elasticdump/elasticsearch-dump --input=http://ip1:9200/index1 --output=http://ip1:9200/my_index --type=mapping

# 将data复制到文件
docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump --input=http://ip:9200/my_index --output=/tmp/my_index_data.json --type=data
  • 从文件恢复数据到es:
1
2
3
4
# 从文件中恢复data
docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump --input=/tmp/my_index_data.json --output=http://ip:9200/my_index --type=data

# mapping和analyzer略
  • 常见错误
1
Error: connect ECONNREFUSED 127.0.0.1:9200

访问 localhost 时 docker 要添加 --net=host,表示宿主和容器同网络,如不添加访问的是容器内的网络。

1
docker run --net=host --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump --input=/tmp/my_index_data.json --output=http://localhost:9200/my_index --type=data