门户网站 特点,网站开发与应用案例教程,网站站点地图设计,公司策划方案接上篇《3、es与mysql的概念对比》 上一篇我们学习了Elasticsearch与Mysql的概念与区别。本篇我们来进行Elasticsearch的环境准备及软件安装。 一、环境准备
如果我们没有自己的Linux服务器#xff0c;且现在正在使用的是Windows操作系统的电脑#xff0c;那么首先我们需要安…接上篇《3、es与mysql的概念对比》 上一篇我们学习了Elasticsearch与Mysql的概念与区别。本篇我们来进行Elasticsearch的环境准备及软件安装。 一、环境准备
如果我们没有自己的Linux服务器且现在正在使用的是Windows操作系统的电脑那么首先我们需要安装VMware Workstation并在VMware中安装Centos版本的Linux虚拟机做测试用安装教程如下 《虚拟机 VMware Workstation-安装详细步骤作者Envyᥫᩣᩚ》https://blog.csdn.net/2302_82029124/article/details/140334173 《linux笔记 - 安装虚拟机作者zf xia》https://blog.csdn.net/qq_43021651/article/details/143341068
这里虚拟机我安装的是VMware Workstation Pro 17centos镜像使用的是CentOS7.9Xshell远程连接使用的Xshell8免费版下载地址如下 【VMware Workstation Pro 17】下载地址3DM三大妈https://soft.3dmgame.com/down/321412.html 【CentOS7.9】镜像下载地址阿里云镜像https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso 【Xshell8免费版】官网下载地址https://www.xshell.com/zh/free-for-home-school/ 装完后效果记得关闭防火墙否则有可能xshell连不上 如果虚拟机连不上外网例如ping www.baidu.com不通参考下文 《vmware创建的虚拟机无法连接外网作者骑士999111》https://blog.csdn.net/qishiheyongshi/article/details/133001432
虚拟机和xshell都装好后我们就可以使用xshell链接虚拟机IP地址是我们在安装虚拟机的时候设置好的用root登录就行 进入根目录查看一下显示正常即可
二、安装Docker
在安装Elasticsearch之前首先需要安装好Docker。什么是DockerDocker是一个开源的容器化平台它允许开发者将应用程序及其所有依赖项打包到一个标准化的单元中这个单元被称为“容器”。容器可以在任何支持Docker的环境中运行从而确保应用程序的可移植性和一致性。
简单来说Docker就像一个轻量级的虚拟机但它比虚拟机更高效因为它直接使用宿主机的操作系统内核而不是像虚拟机那样需要模拟一个完整的操作系统。这使得Docker容器的启动速度非常快并且占用资源更少。 你可以把docker中的一个容器理解为即将安装到VMware中的装好了很多软件环境的ISO镜像文件只不过这个ISO镜像文件很轻量级。 想了解更多信息大家可到Docker官网查看。安装Docker的教程详见 《CentOS安装Docker(超详细)作者屈家全》https://blog.csdn.net/weixin_56781779/article/details/132258636
输入“docker -v”查看Docker版本显示无误后Docker安装成功 安装完Docker后就可以开始安装Elasticsearch了。
有同学会问为啥要先安装docker原因有如下几点 在安装Elasticsearch之前先安装Docker主要基于以下几个原因
1、安装过程与复杂度
1直接安装 需要手动下载Elasticsearch的二进制包或使用包管理器如apt、yum等进行安装。 安装过程可能涉及配置文件的编辑、服务的启动和管理等步骤。2Docker安装 使用docker pull命令从Docker Hub或其他镜像仓库下载Elasticsearch的Docker镜像。 使用docker run命令启动Elasticsearch容器。 安装过程相对简单不需要手动配置Elasticsearch的多个细节。
2、资源管理与隔离性
1直接安装 Elasticsearch直接运行在宿主机的操作系统上直接访问宿主机的资源如CPU、内存、磁盘等。 性能直接受宿主机的资源限制可能会与其他应用程序共享资源影响性能或安全性。2Docker安装 Elasticsearch运行在一个隔离的Docker容器中不会直接访问宿主机的资源。 可以通过Docker命令轻松设置容器的资源限制如CPU、内存等。 提供了良好的隔离性Elasticsearch与其他容器或宿主机上的应用程序是隔离的。
3、升级与维护
1直接安装 升级通常需要停止服务、替换二进制文件、重新配置等步骤。 维护和管理可能需要更多的手动操作。2Docker安装 升级通常只需要拉取最新的镜像并重新启动容器。 生命周期管理更加简单和自动化。
4、配置与数据持久化
1直接安装 配置文件通常位于宿主机的某个目录中。 数据存储在宿主机上的指定目录中。 需要手动管理配置文件和数据。2Docker安装 可以使用docker run命令中的-v参数将宿主机上的目录挂载到容器内以实现配置文件和数据的持久化。 即使容器被删除配置文件和数据仍然保留在宿主机上。
综上所述直接安装Elasticsearch和Docker安装Elasticsearch在多个方面存在显著差异。Docker安装提供了更好的资源隔离性、更简单的升级与维护流程以及更灵活的配置与数据持久化选项。而直接安装则可能更直接地利用宿主机的资源但在资源管理和安全性方面可能需要更多的手动配置。在选择安装方式时需要根据具体的使用场景和需求进行权衡。
三、安装Elasticsearch
1、需要安装的内容
这里我们部署的是单点的Elasticsearch而不是集群的所以安装一台服务即可。 我们要安装的软件除了Elasticsearch还需要安装Kibana和IK分词器它们都是数据处理和搜索分析领域的重要工具各自有不同的功能与作用区别如下
1Elasticsearch Elasticsearch是一个基于Lucene构建的开源、分布式、实时的搜索和分析引擎。它主要用于全文搜索、日志分析、实时数据分析等场景支持多种数据类型如文本、数字、地理位置等和灵活的查询语言。Elasticsearch的核心优势包括大规模数据处理能力、高性能搜索、实时分析、灵活性和多样性、易于集成、可扩展性、容错性与高可用性以及丰富的开源社区支持。
2Kibana Kibana是一个开源的数据可视化和分析平台设计用于与Elasticsearch协同工作。Kibana允许用户搜索、查看和与存储在Elasticsearch索引中的数据进行交互可以轻松地执行高级数据分析并以各种图标、表格和地图的形式可视化数据。Kibana的主要功能包括数据可视化、实时监控、用户友好的界面和与Elastic Stack的无缝集成。通过Kibana用户可以创建和共享动态仪表板实时显示Elasticsearch查询的变化从而更好地理解和分析数据。
3IK分词器 IK分词器IK Analyzer是一款开源的中文分词工具支持智能分词、细粒度分词等多种分词模式。它基于词典的分词算法结合了最大匹配法和逆向最大匹配法能够在保证分词准确性的同时保持较高的分词速度。IK分词器的主要作用是将中文文本切分为有意义的词项为后续的文本分析、信息检索、机器学习等任务提供基础数据。其优势在于高效性、灵活性和多种分词模式适用于不同的应用场景。
总的来说Elasticsearch、Kibana和IK分词器在数据处理和搜索分析领域各自扮演着重要的角色。Elasticsearch负责存储、搜索和分析数据Kibana负责数据的可视化和管理而IK分词器则专注于中文文本的分词处理为Elasticsearch等搜索引擎提供准确的分词结果。
2、创建网络
因为我们还需要部署kibana容器因此需要让es和kibana容器互联。这里先创建一个网络:
docker network create es-net
然后查看网络列表
docker network ls
效果1命令含义docker network create es-net 是一个Docker命令用于创建一个新的Docker网络。在这个例子中创建的网络名称是 es-net。Docker网络允许容器之间安全地通信并且可以通过配置来限制外部访问。2语法解释docker这是Docker命令行工具的调用命令用于执行Docker相关的操作。network这是指定要操作的是Docker网络的一个子命令。Docker网络是Docker容器之间通信的基础设施。create这是指定要对Docker网络执行的操作即创建一个新的网络。es-net这是新创建的Docker网络的名称。在这个例子中网络被命名为 es-net但你可以根据需要将其命名为任何有效的名称。3为什么要创建网络 在Docker中容器之间默认是隔离的它们不能直接相互通信除非通过特定的网络配置。创建自定义网络如 es-net允许你将多个容器连接到一个共同的网络中使它们能够相互通信。这对于部署需要相互通信的服务如Elasticsearch和Kibana非常有用。
Elasticsearch和Kibana容器互联一旦你创建了 es-net 网络你就可以在启动Elasticsearch和Kibana容器时将它们连接到这个网络。这可以通过在 docker run 命令中使用 --network 参数来实现。例如
docker run -d --name elasticsearch --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:latest
docker run -d --name kibana --network es-net -p 5601:5601 kibana:latest
在这个例子中Elasticsearch和Kibana容器都被连接到了 es-net 网络因此它们能够相互通信。Kibana将能够访问Elasticsearch提供的API从而提供数据可视化和搜索功能。 总之创建Docker网络是部署多个需要相互通信的容器时的一个重要步骤它提供了容器之间安全通信的基础设施。
3、加载镜像
这里我们采用elasticsearch的7.12.1版本的镜像这个镜像体积非常大接近1Gpull下来需要花点时间获取镜像包语法如下
docker pull elasticsearch:7.12.1 在过程中可以会遇到报错解决方案参考下面的文章 《Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canceled while作者修心光》https://blog.csdn.net/qq18346342939/article/details/142751367
注如果pull的时间太长可以下载CSDN的离线安装包下载地址https://download.csdn.net/download/booguojieji/85329645 使用方法 elasticsearch的7.12.1版本的镜像使用docker load -i elasticsearch.tar 加载镜像 kibana的7.12.1版本的镜像使用docker load -i kibana.tar 加载kibana镜像包 ik分词器解压到es的plugins目录下
4、运行Elasticsearch
安装好Elasticsearch的镜像后使用下面的语句将es服务启动起来
docker run -d \--name es \-e ES_JAVA_OPTS-Xms512m -Xmx512m \-e discovery.typesingle-node \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1
上述语句的解释如下1docker run -d docker run 是Docker的命令用于创建一个新的容器并运行一个命令。 -d 参数表示容器将以“分离模式”运行即在后台运行。2--name es --name 参数后面跟的是容器的名称这里将容器命名为es。3-e ES_JAVA_OPTS-Xms512m -Xmx512m -e 参数用于设置环境变量。 这里设置的环境变量ES_JAVA_OPTS用于调整Elasticsearch的Java虚拟机JVM的启动参数。-Xms512m设置JVM的初始堆大小为512MB-Xmx512m设置JVM的最大堆大小为512MB。4-e discovery.typesingle-node 同样使用-e参数设置环境变量。 discovery.typesingle-node是Elasticsearch的配置表示Elasticsearch将以单节点模式运行。这在开发或测试环境中很常见但在生产环境中通常不推荐因为缺乏高可用性和数据冗余。5-v es-data:/usr/share/elasticsearch/data -v 参数用于创建数据卷。 这里创建了一个名为es-data的数据卷并将其挂载到容器内的/usr/share/elasticsearch/data目录。Elasticsearch的数据将存储在这个数据卷中这样做的好处是即使容器被删除数据也不会丢失。6-v es-plugins:/usr/share/elasticsearch/plugins 同样使用-v参数创建数据卷。 这里创建了一个名为es-plugins的数据卷并将其挂载到容器内的/usr/share/elasticsearch/plugins目录。这允许你将Elasticsearch插件安装在数据卷中而不是容器内部同样可以保持插件在容器删除后的持久性。7--privileged --privileged参数给予容器额外的权限使得容器内的应用可以访问宿主机的设备并可以执行一些通常需要较高权限的操作。这对于Elasticsearch这样的应用可能是必要的因为它可能需要访问宿主机的一些资源。8--network es-net --network参数用于指定容器要连接的网络。 这里指定容器连接到名为es-net的Docker网络。这允许容器之间的网络通信适用于需要相互通信的服务。9-p 9200:9200和-p 9300:9300 -p 参数用于端口映射。 这里将容器内的9200、9300端口映射到宿主机的9200、9300端口。9200端口是Elasticsearch的HTTP API端口用于RESTful通信。9300端口是Elasticsearch的节点间通信端口用于集群内部通信。10elasticsearch:7.12.1 这是要运行的Docker镜像的名称和标签。 这里使用的是elasticsearch镜像版本为7.12.1。Docker会从Docker Hub或其他配置的镜像仓库下载这个镜像如果本地没有的话并基于它启动容器。 综上所述这个命令启动了一个名为es的Elasticsearch容器配置了JVM参数、以单节点模式运行、使用数据卷存储数据和插件、拥有较高的权限、连接到特定的Docker网络并映射了9200和9300端口供外部访问。
启动后效果 此时我们在浏览器输入http://ip:9200/就可以看到如下界面这里的ip是你的Linux虚拟机或服务器的ip 里面包含了版本信息和服务启动时间此时说明咱们的elasticsearch已经安装并启动成功。
5、安装Kibana
kibana可以给我们提供一个elasticsearch的可视化界面便于我们学习。 运行docker命令部署kibana
docker run -d \--name kibana \-e ELASTICSEARCH_HOSTShttp://es:9200 \--networkes-net \-p 5601:5601 \
kibana:7.12.1
●--network es-net 加入一个名为es-net的网络中与elasticsearch在同一个网络中●-e ELASTICSEARCH_HOSTShttp://es:9200设置elasticsearch的地址因为kibana已经与elasticsearch在一个网络因此可以用容器名直接访问elasticsearch●-p 5601:5601端口映射配置 效果 kibana启动一般比较慢需要多等待一会可以通过命令
docker logs -f kibana
查看运行日志当查看到下面的日志说明成功 此时在浏览器输入地址访问http://ip:5601即可看到结果这里的ip是你的Linux虚拟机或服务器的ip 这里就是Kibana的首页下面有两种操作模式一种是“Add Data”导入数据进行试用一种是“Explore on my own”自己玩。这里我们选择自己玩 进入“Explore on my own”后在右上角可以看到“Manage”按钮是用于管理的而“Dev tools”即是开发工具。当然我们也可以点击左侧的三个横线打开主菜单 这些菜单牵扯到es的各种各样的管理包括数据分析、外观、安全管理等等。 我们先来用一下Dev tools这个工具 这是一个DLSElasticsearc的查询语句格式的控制台它可以让我们非常方便的去发送DLS的请求 默认在左侧显示的json语句就是我们的DSL语句。这个语句的含义是“查询所有的数据”。而第一句中的“GET”代表的是我们发送的是一个RESTful风格的HTTP的GET请求“_search”代表我们要做的是搜索操作。 如果我们点击播放的小按钮Kibana就会发送左侧的DSL语句给es服务Kibana之所以知道es服务的地址是因为在前面我们启动Kibana的时候已经通过“ELASTICSEARCH_HOSTS”参数指定了es的访问地址。点击后效果 可以看到右侧已经有es的反馈结果了搜到了很多数据信息。 如果我们直接GET一个“/”空路径那么它输出的结果就和我们安装好es直接在浏览器上访问的结果一样 还剩下一个IK分词器没安装我们在下一篇博文中单独进行讲解。
参考《黑马Elasticsearch全套教程》
转载请注明出处https://guangzai.blog.csdn.net/article/details/144490516