Elasticsearch介绍与应用
Elasticsearch的官方文档。
Elasticsearch官网参考文档:https://www.elastic.co/guide/index.html
Elasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch
mvnrepository依赖库地址:https://mvnrepository.com/
Elasticsearch是做什么的
Elasticsearch是一种开源分布式搜索和分析引擎,它可以帮助用户快速地存储、搜索、分析和可视化大量的数据。Elasticsearch使用Lucene作为其基础搜索引擎,可以处理海量的结构化和非结构化数据,并提供实时搜索和分析功能。它可以跨多个服务器构建集群,并自动处理数据分片、负载均衡和故障转移,从而保证了高可用性和可扩展性。Elasticsearch还提供了灵活的RESTful API,使得开发人员可以很容易地与之交互。Elasticsearch被广泛应用于各种领域,如搜索、数据分析、电子商务、日志分析、安全信息和业务智能等领域。
Elasticsearch有哪些重要场景
Elasticsearch在以下场景中非常有用:
搜索场景:Elasticsearch可以帮助构建实时搜索引擎,支持全文搜索、自动补全、分类搜索等功能。这使得Elasticsearch经常被应用在文本搜索、电子商务、新闻门户等领域。
数据分析场景:Elasticsearch可以帮助处理海量数据,并支持实时的数据聚合、统计和分析。这使得Elasticsearch经常被应用在数据分析、监控、报表等领域。
日志分析场景:Elasticsearch可以非常高效地处理大量日志数据,并支持实时的、可视化的日志分析和搜索等功能。这使得Elasticsearch经常被应用在日志分析、系统监控等领域。
安全信息场景:Elasticsearch可以帮助存储和分析访问日志、安全日志等安全信息,并提供实时告警和分析等功能。这使得Elasticsearch经常被应用在网络安全、信息安全等领域。
业务智能场景:Elasticsearch可以帮助构建实时的业务智能服务,支持数据挖掘、机器学习和预测等功能。这使得Elasticsearch经常被应用在业务智能、营销分析等领域。
Elasticsearch适用于那些语言开发
Elasticsearch支持多种编程语言的客户端库,这些客户端库使得开发人员可以使用自己喜欢的语言与Elasticsearch进行交互,包括:
java,python,PHP,GO,C#…
此外,Elasticsearch还提供了一个RESTful API,使得可以使用任何支持HTTP请求的编程语言与Elasticsearch进行通信。这使得开发人员可以使用自己熟悉的语言和工具与Elasticsearch集成。
Elasticsearch的安装配置
注意事项(不建议使用docker部署Elasticsearch,坑太多,大家直接下载包在win或者Linux上部署,听说哈,不允许root用户部署)
创建网络
创建一个公用网络,使得kibana和Elasticsearch可以完成互联
docker network create es-net
拉取镜像
docker pull elasticsearch:8.6.0
创建挂载点目录
mkdir -p /usr/local/src/soft/es/data /usr/local/src/soft/es/config /usr/local/src/soft/es/plugins
文件授权
chmod 777 /usr/local/src/soft/es/data
chmod 777 /usr/local/src/soft/es/config
chmod 777 /usr/local/src/soft/es/plugins
启动容器
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/src/soft/es/data:/usr/share/elasticsearch/data \
-v /usr/local/src/soft/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0
它将Elasticsearch 8.6.0映像用作容器。这里是每个参数的解释:
-d
:将容器作为后台守护进程运行。--restart=always
:当容器异常退出时,自动重启容器。--name es
:将容器命名为 “es”。--network es-net
:将容器加入名为 “es-net” 的Docker网络。-p 9200:9200
:将容器的9200端口映射到主机的9200端口。-p 9300:9300
:将容器的9300端口映射到主机的9300端口。--privileged
:授予容器特权,允许它执行特殊功能。-v /usr/local/soft/es/data:/usr/share/elasticsearch/data
:将主机的/usr/local/soft/es/data
目录挂载到容器的/usr/share/elasticsearch/data
目录,让Elasticsearch作为节点的数据持久化存储。-v /usr/local/soft/es/plugins:/usr/share/elasticsearch/plugins
:将主机的/usr/local/soft/es/plugins
目录挂载到容器的/usr/share/elasticsearch/plugins
目录,将Elasticsearch插件安装目录挂载到容器中。-e "discovery.type=single-node"
:将集群发现设置为通过使用单节点模式(默认情况下Elasticsearch期望与其他节点通信)。-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:将Java运行时的堆内存设置为512MB。elasticsearch:8.6.0
:要运行的映像的名称和标签。这个命令的目的是使用Docker来创建一个运行Elasticsearch的容器。
编写elasticsearch.yml配置文件
docker exec -it es /bin/bash
cd config
echo 'xpack.security.enabled: false' >> elasticsearch.yml #关闭密码安全验证
不关闭访问9200端口会有一个密码校验
重启容器
docker restart es
访问虚拟机地址+端口号,前面配置Elasticsearch 的端口号为:9200
Kibana的安装配置
Kibana是一个开源的、基于Web的数据分析和可视化工具,主要用于Elasticsearch的数据分析和可视化。它提供了一个用户友好的界面,可以对Elasticsearch中的数据进行搜索、过滤、聚合、图表化等操作,帮助用户更好地理解和分析数据。Kibana通常与Elasticsearch一起使用,用于构建实时的数据仓库和分析平台。
要使用Docker静默安装kibana:8.6.0你可以按照以下步骤操作:
拉取镜像
docker pull kibana:8.6.0
创建挂载点目录
mkdir -p /usr/local/src/soft/kibana/config /usr/local/src/soft/kibana/data
部署kibana,创建kibana容器
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.6.0
这是一个Docker运行命令,它将Kibana 8.6.0映像用作容器。以下是每个参数的解释:
-d
:将容器作为后台守护进程运行。--restart=always
:当容器异常退出时,自动重启容器。--name kibana
:将容器命名为 “kibana”。--network es-net
:将容器加入名为 “es-net” 的Docker网络。-p 5601:5601
:将容器的5601端口映射到主机的5601端口。-e ELASTICSEARCH_HOSTS=http://es:9200
:将Elasticsearch的地址设置为“http://es:9200”,其中“es”是Elasticsearch容器的名称,而不是IP地址或主机名。这使得Kibana可以连接到内部的Elasticsearch容器。kibana:8.6.0
:要运行的映像的名称和标签。此命令的目的是在Docker中创建一个运行Kibana的容器。
访问虚拟机地址+端口号,前面配置Kibana 的端口号为:5601
端口放行
在CentOS系统上,您可以使用Firewalld来管理防火墙设置。为使Kibana和Elasticsearch在5601和9200,9300端口上可以正常工作,您需要放行这两个端口,可以按照以下步骤来完成设置:
-
开启防火墙服务:
sudo systemctl start firewalld
-
检查防火墙状态:
sudo firewall-cmd --state
-
开放端口,运行以下命令:
sudo firewall-cmd --add-port=5601/tcp --permanent
这将允许TCP流量在5601端口上传输。
-
开放9200,9300端口,运行以下命令:
sudo firewall-cmd --add-port=9200/tcp --permanent sudo firewall-cmd --add-port=9300/tcp --permanent
这将允许TCP流量在9200端口上传输。
-
禁用SELinux保护:
sudo setsebool -P httpd_can_network_connect on
如果不禁用SELinux,可能会出现无法从Kibana页面访问Elasticsearch的情况。
-
重新加载防火墙规则:
sudo firewall-cmd --reload
现在,防火墙已经配置好了,端口5601和9200现在应该可以用于Kibana和Elasticsearch了。
访问测试
最后,向Acloasia致敬,文章精彩,细致!
https://blog.csdn.net/Acloasia/article/details/130683934