什么是ElasticSearch?
Elasticsearch是一个开源的分布式搜索和分析引擎,它被设计用于实时搜索、分析和存储大量数据。Elasticsearch构建在Apache Lucene搜索引擎库的基础上,提供了一个简单易用的RESTful API,可以对结构化和非结构化数据进行搜索、分析和探索。
要使用 Docker 安装 Elasticsearch,可以按照以下步骤进行操作:
1.拉取 Elasticsearch 镜像
执行以下命令从 Docker Hub 上拉取 Elasticsearch 镜像:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.0
这里使用了 Elasticsearch 7.17.0 版本的官方镜像。
mkdir -p /home/elasticsearch/data/
mkdir -p /home/elasticsearch/config/
- 编写配置文件
echo 'http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml
- 修改文件夹权限
chmod -R 777 /home/elasticsearch/
ls -l # 查看文件权限
- 启动elasticseach镜像
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/shellare/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/data:/usr/shellare/elasticsearch/data \
-v /home/elasticsearch/plugins:/usr/shellare/elasticsearch/plugins \
-d elasticsearch:7.9.2
接下来我们就是拿浏览器访问啦。
在浏览器上输入:服务器IP地址:9200
可能出现的问题:
-
启动成功,但是访问失败的话,查看一下安全组中映射端口是否已经打开。如果是本地虚拟机,可能与防火墙相关(我用的云服务器,没有测试,如果有问题,还是需要大家自行去百度||谷歌一下)。
-
-e ES_JAVA_OPTS=“-Xms64m -Xmx128m”:配置内存大小出现了问题。
-
最后就还有可能是配置文件中出现了问题。
echo 'http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml
http.host: 0.0.0.0
在冒号后面有一个空格的,这里的配置文件是yml
格式,所以一定要严格按照yml
格式来书写。
3.安装ik分词器
进入已经启动成功的elasticsearch容器。
docker exec -it elasticsearch /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip
ps: 安装的ik分词器的版本一定要与elasticsearch的版本保持一致
下载过程中如果遇到选择,直接输入 y回车就可以了。
下载完成之后,退出去,重新启动elasticsearch容器。
docker restart elasticsearch
测试ik分词器是否安装成功
安装完成后,我们再来进行测试遍,看看有什么样的变化。
postman post请求分词测试:http://服务器IP地址:9200/_analyze
{
"tokenizer":"ik_smart",
"text":"我爱技术"
}
结果
{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "CN_CHAR",
"position": 0
},
{
"token": "爱",
"start_offset": 1,
"end_offset": 2,
"type": "CN_CHAR",
"position": 1
},
{
"token": "技术",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 2
}
]
}
这将在后台运行 Elasticsearch 容器,并将容器的 9200 端口映射到主机的 9200 端口(用于 HTTP 访问 Elasticsearch API),将容器的 9300 端口映射到主机的 9300 端口(用于节点间通信)。
-e “discovery.type=single-node” 参数用于指定 Elasticsearch 的节点发现类型为单节点模式,适用于单节点部署。
3.验证 Elasticsearch 是否正常运行:
可以通过访问 http://localhost:9200
(如果是在本地安装)或者 http://<your-ip>:9200
(如果是在远程服务器安装)来验证 Elasticsearch 是否正常运行。你应该能够看到 Elasticsearch 的基本信息。
最后
现在,你已经在 Docker 中成功安装并运行了 Elasticsearch。你可以使用 Elasticsearch 的 RESTful API 来索引、搜索和分析数据。
本文为学习笔记,仅供学习和参考。