1、简述
Elasticsearch 是一个分布式、RESTful 搜索和分析引擎,基于 Apache Lucene 构建,广泛应用于日志和事件数据分析、全文搜索、数据监控和商业智能等领域。通过 Docker,可以快速搭建和管理 Elasticsearch。本文将介绍如何使用 Docker 搭建 Elasticsearch,并探讨其应用场景以及优缺点。
2、安装 ES
在docker官网上查找ES要安装的版本:
docker pull elasticsearch:7.4.2
检查安装:
[root@localhost config]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest fad0ee7e917a 3 weeks ago 105MB
mysql 5.7 a70d36bc331a 5 months ago 449MB
elasticsearch 7.4.2 b1179d41a7b4 20 months ago 855MB
创建ES数据文件映射:
mkdir -p /shop/es/config
mkdir -p /shop/es/data
mkdir -p /shop/es/plugins
指定远程访问IP:
echo "http.host:0.0.0.0" >>/shop/es/config/elasticsearch.yml
启动ES:
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /shop/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /shop/es/data:/usr/share/elasticsearch/data \
-v /shop/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
discovery.type :指定当前是单集群。
ES_JAVA_OPTS :指定运行内存,以防占满虚拟机内存
随机启动 :
docker update elasticsearch --restart=always
访问http://localhost:9200端口,如下代表安装成功:
{
"name" : "82d231a2cd69",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6g1q-mXFSrK4JYIvd5dSDA",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
3、安装IK分词器
IK 分词器是一个开源的中文分词插件,用于 Elasticsearch,可以大大提高中文文本的分词效果。下面是为 Elasticsearch 安装 IK 分词器的详细步骤。已经将plugin目录映射出来,直接下载IK分词器对应的版本包:
地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.4.2
mkdir -p /shop/es/plugins/ik
chmod -R 777 /shop/es/plugins/ik
下载安装包直接放在插件Ik目录:
unzip elasticsearch-analysis-ik-7.4.2.zip
或者直接通过以下命令直接下载并安装:
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
请确保命令中的版本号与 Elasticsearch 的版本号匹配。以上命令适用于 Elasticsearch 7.4.2。如果你使用的是其他版本,请替换为相应版本的链接。
调整IK配置,通过docker exec指令进入容器内部:
docker exec -it 81d2 /bin/bash
elasticsearch-plugin list
添加远程分词字典:找到 ik配置config
vi IKAnalyzer.cfg.xml
调整xml配置
<?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>
<!--用户可以在这里配置远程扩展字典 ,通过Nginx静态文件-->
<entry key="remote_ext_dict">http://IP地址/es/fenci.txt</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
你可以通过访问 Elasticsearch 的 _cat/plugins API 来验证插件是否安装成功:
curl -X GET "localhost:9200/_cat/plugins?v"
4、安装Kibana
Kibana 是一个开源的分析和可视化平台,专门用于 Elasticsearch。通过 Docker,可以快速部署 Kibana:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://访问IP:9200 -p 5601:5601 -d kibana:7.4.2
启动 Kibana 后,可以通过浏览器访问 Kibana 的 Web 界面。在初次设置中,Kibana 可能会要求你配置 Elasticsearch 索引模式。根据你的数据结构配置索引模式后,就可以使用 Kibana 的各种功能进行数据可视化和分析。
也可以通过docker-compose 编排安装:
version: '7.4'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- "9200:9200"
volumes:
- esdata:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.4.2
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
volumes:
esdata:
driver: local
在包含 docker-compose.yml 文件的目录下运行以下命令来启动服务:
docker-compose up -d
该命令会下载所需的 Docker 镜像并启动容器。启动完成后,你可以通过访问 http://localhost:5601 来访问 Kibana,默认情况下 Elasticsearch 的 REST API 可以通过 http://localhost:9200 访问:
5、优势和场景
5.1 优点
- 高性能:Elasticsearch 基于 Lucene 构建,具有高性能的搜索和分析能力。
- 分布式架构:Elasticsearch 天生支持分布式,能够处理大规模数据。
- 灵活的查询语言:提供丰富的查询 DSL,能够满足各种复杂查询需求。
- 强大的可视化工具:Kibana 提供了丰富的可视化功能,可以方便地展示和分析数据。
- 丰富的生态系统:与 Logstash、Beats 等工具无缝集成,形成完整的数据处理和分析链条。
5.2 缺点
- 资源消耗大:Elasticsearch 对内存和存储要求较高,需要合理规划资源。
- 学习曲线陡峭:丰富的功能和配置选项使得上手需要一定的学习成本。
- 复杂性:分布式架构带来了管理和维护上的复杂性,尤其在数据节点增多时。
- 数据更新开销:Elasticsearch 更适合读密集型应用,对于频繁写操作的场景,可能需要优化或选择其他方案。
5.3 应用场景
- 日志分析
Elasticsearch 和 Kibana 常用于收集和分析系统日志。通过 Beats 或 Logstash 收集日志数据,存储在 Elasticsearch 中,然后使用 Kibana 可视化分析。 - 全文搜索
Elasticsearch 具有强大的全文搜索功能,可以应用于网站搜索、文档管理系统等场景。 - 实时数据分析
通过 Elasticsearch 强大的索引和查询能力,可以对大规模数据进行实时分析,适用于监控、数据洞察等场景。
6、结论
通过 Docker 搭建 Elasticsearch 和 Kibana,可以快速启动和管理这两个强大的工具。它们在日志分析、全文搜索和实时数据分析等场景中具有广泛应用。尽管存在一些资源消耗和学习成本的问题,但它们的强大功能和灵活性使得它们成为许多企业和开发者的首选方案。通过合理的配置和优化,可以充分发挥它们的潜力。
评论区