当前位置: 首页 > article >正文

微服务--ES(Elasticsearch)

Elasticsearch是一个基于Lucene的分布式、高扩展、高实时的搜索与数据分析引擎。它位于Elastic Stack(以前称为ELK Stack)的核心,与Logstash(数据收集和日志解析引擎)和Kibana(分析和可视化平台)一起,为各种类型的数据提供近乎实时的搜索和分析能力。以下是对Elasticsearch的详细解析:

Elasticsearch的基本概念

  • 定义:Elasticsearch是一个开源的搜索引擎,它允许你以快速且近乎实时的方式存储、搜索和分析大量数据。无论是结构化还是非结构化数据,Elasticsearch都能高效地存储和索引。
  • 核心组件:Elasticsearch与Logstash和Kibana共同构成了Elastic Stack,提供从数据收集、处理、存储到分析和可视化的完整解决方案。

Elasticsearch的主要功能和特性

  1. 分布式架构
    • Elasticsearch是分布式的,意味着索引可以被分成分片,每个分片可以有0个或多个副本。这种设计使得Elasticsearch能够水平扩展,以处理大规模数据集。
    • 分片数在索引创建时指定,且后续不允许更改。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。
  2. 实时搜索和分析
    • Elasticsearch支持近实时的数据索引和搜索,用户可以在数据被索引后几乎立即进行搜索。
    • 它提供了丰富的查询DSL(领域特定语言),允许用户构建复杂的查询语句,以满足各种搜索需求。
  3. 可扩展性和高可用性
    • Elasticsearch的分布式特性使得其能够随着数据量和查询量的增长而无缝扩展。
    • 通过副本分片,Elasticsearch提高了数据的可用性和容错性,即使部分节点发生故障,也能保证服务的连续性。
  4. 数据聚合和可视化
    • Elasticsearch支持对数据进行聚合操作,如分组、统计、排序等,以生成复杂的分析报告。
    • 结合Kibana,用户可以对Elasticsearch中的数据进行交互式查询、可视化和分享。
  5. RESTful API
    • Elasticsearch通过HTTP/HTTPS协议提供RESTful API接口,使得与Elasticsearch的交互变得简单、统一且易于集成到各种应用程序中。

Elasticsearch的应用场景

  • 日志分析:Elasticsearch经常被用于实时日志分析,帮助开发人员和运维人员快速定位问题。
  • 全文搜索:对于需要全文搜索功能的网站或应用程序,Elasticsearch是一个理想的选择。
  • 数据分析:Elasticsearch的数据聚合和可视化功能使其成为数据分析领域的强大工具。
  • 实时监控系统:结合Logstash和Kibana,Elasticsearch可以构建实时监控系统,对系统性能进行实时监控和预警。

Elasticsearch和mysql的区别

Elasticsearch和MySQL是两种不同类型的数据库系统,它们在多个方面存在显著的区别。以下是它们之间的一些主要差异:

1. 用途和特点

  • MySQL
    • 是一种关系型数据库管理系统(RDBMS),用于存储结构化数据。
    • 提供ACID事务支持,适合需要强一致性和事务支持的应用程序。
    • 适用于事务处理和实时写入,能够提供较高的实时性。
  • Elasticsearch
    • 是一个基于Lucene的分布式搜索和分析引擎,专门用于处理非常大的文本数据集。
    • 专注于全文搜索、实时数据分析和日志搜索等用途。
    • 支持全文搜索和复杂的数据分析查询,提供分布式、高性能的全文搜索和分析功能。

2. 数据存储和模型

  • MySQL
    • 采用关系模型进行数据存储,使用表格进行数据的组织和存储。
    • 支持复杂的关系型查询和事务处理。
  • Elasticsearch
    • 采用文档型存储模型,以JSON格式存储文档。
    • 不支持事务,但提供了灵活的文档存储和高效的搜索能力。

3. 查询和性能

  • MySQL
    • 执行结构化的SQL查询,支持复杂的关系型查询语句。
    • 在处理简单的精确匹配查询时表现良好,特别是在数据量较小且建立了合适索引的情况下。
    • 对于全文搜索等需求支持较弱,需要额外的配置和优化。
  • Elasticsearch
    • 提供强大的全文搜索和文本分析功能,可以执行复杂的查询。
    • 支持多种类型的模糊搜索、聚合分析和实时数据分析。
    • 在处理大规模数据集和复杂查询时表现出色,特别是当数据量达到百万级甚至更高时。

4. 扩展性和灵活性

  • MySQL
    • 扩展性相对复杂,通常需要通过读写分离、分库分表等方式来提高性能。
    • 数据结构相对固定,需要事先定义好表结构。
  • Elasticsearch
    • 水平扩展容易,可以轻松地通过增加节点来扩展集群的容量和性能。
    • 数据结构灵活,不需要事先定义好数据结构,可以动态地添加或修改字段。

5. 适用场景

  • MySQL
    • 适合于需要强一致性和事务支持的应用场景,如金融交易系统、电商网站的订单和用户信息管理系统等。
  • Elasticsearch
    • 适合于全文搜索、实时数据分析和日志搜索等场景,如网站的搜索功能、数据分析平台、日志管理系统等。

Elasticsearch的安装

    环境配置

  1. 安装Java环境
    • Elasticsearch是基于Java开发的,因此需要安装Java运行环境(JRE)或Java开发工具包(JDK)。
    • 建议安装JDK 1.8.0_73以上版本,并确保JAVA_HOME环境变量正确设置,同时%JAVA_HOME%\bin应被添加到系统的PATH环境变量中。
  2. 下载Elasticsearch安装包
    • 访问Elasticsearch的官方网站(Download Elasticsearch | Elastic)下载适合Windows系统的安装包。
    • 选择合适的版本进行下载,注意Elasticsearch的版本兼容性。

    安装步骤

  1. 解压安装包
    • 将下载的Elasticsearch安装包解压到一个非中文且没有空格的目录下,例如D:\elasticsearch
  2. 配置Elasticsearch(可选):
    • 如果需要修改Elasticsearch的默认配置,可以编辑config\elasticsearch.yml文件。
    • 常见的配置项包括集群名称(cluster.name)、节点名称(node.name)、数据路径(path.data)、日志路径(path.logs)等。
  3. 启动Elasticsearch服务
    • 进入Elasticsearch的bin目录。
    • 双击elasticsearch.bat文件启动Elasticsearch服务,或者通过命令行运行elasticsearch.bat
    • 注意:如果是通过命令行启动,确保命令行窗口保持打开状态,否则Elasticsearch服务将停止。
  4. 验证安装
    • 打开浏览器,访问http://localhost:9200(或你配置的其他地址和端口)。
    • 如果看到Elasticsearch的响应信息(如版本号、集群名称等),则表示安装成功。

    额外配置和插件安装

  1. 安装Elasticsearch-head插件(可选):
    • Elasticsearch-head是一个Web界面的Elasticsearch集群管理工具,可以帮助用户更方便地管理和监控Elasticsearch集群。
    • 安装前需要安装Node.js和Grunt(一个JavaScript任务运行器)。
    • 下载Elasticsearch-head插件并解压,然后在插件目录下运行npm install安装依赖。
    • 运行npm run startgrunt server启动Elasticsearch-head服务。
  2. 安装IK分词器插件(可选):
    • IK分词器是Elasticsearch的一个中文分词插件,可以提高中文搜索的准确性和效率。
    • 下载与Elasticsearch版本相匹配的IK分词器插件并解压到Elasticsearch的plugins目录下。
    • 重启Elasticsearch服务以使插件生效。

Elasticsearch安装kibana

下载Kibana

  1. 访问官网
    • 前往Kibana的官方网站(Kibana: Explore, Visualize, Discover Data | Elastic)或下载页面(Download Kibana Free | Get Started Now | Elastic)。
  2. 选择版本
    • 根据你的Elasticsearch版本选择合适的Kibana版本。尽量保持Kibana和Elasticsearch的版本一致,或者确保它们之间的兼容性。
  3. 下载安装包
    • 下载对应版本的Kibana安装包,通常是一个压缩文件(如.tar.gz)。

解压Kibana

  1. 选择安装目录
    • 选择一个合适的目录来解压Kibana,通常建议选择非中文且没有空格的路径,例如/usr/local/kibana(Linux)或D:\kibana(Windows)。
  2. 解压文件
    • 使用适当的命令或工具解压Kibana安装包。在Linux中,可以使用tar -zxvf kibana-xxx.tar.gz命令;在Windows中,可以使用压缩软件如WinRAR或7-Zip进行解压。

配置Kibana

  1. 编辑配置文件
    • 进入Kibana的config目录,找到kibana.yml文件并使用文本编辑器打开。
    • 根据需要修改配置项,例如:
      • server.port: Kibana监听的端口号,默认为5601。
      • server.host: Kibana绑定的主机地址,可以是0.0.0.0(允许任何IP地址访问)或特定的IP地址。
      • elasticsearch.hosts: Elasticsearch节点的地址列表,格式为["http://host1:port1", "http://host2:port2"]
      • 其他配置项可以根据实际需要进行调整。
  2. (可选)配置权限
    • 如果Elasticsearch和Kibana不是以root用户运行的,确保Kibana的安装目录和配置文件具有适当的读写权限。

启动Kibana

  1. 切换到合适的用户(如果非root用户):
    • 在Linux系统中,通常不建议以root用户运行Elasticsearch和Kibana。因此,你可能需要切换到非root用户或使用sudo命令以非root用户身份运行Kibana。
  2. 启动Kibana
    • 进入Kibana的bin目录。
    • 在Linux中,运行./kibana命令启动Kibana。如果需要使用后台进程运行,可以使用nohup ./kibana &命令。
    • 在Windows中,双击kibana.bat文件或使用命令行运行kibana.bat
  3. 验证安装
    • 打开浏览器,访问http://localhost:5601(或你配置的其他地址和端口)。
    • 如果看到Kibana的登录或主界面,则表示安装成功。

Elasticsearch安装ik分词器

环境准备

  1. 确认Elasticsearch版本
    • 在安装IK分词器之前,首先需要确认你的Elasticsearch的版本号。因为IK分词器的版本需要与Elasticsearch的版本相匹配或兼容。
  2. 下载IK分词器
    • 访问IK分词器的GitHub页面(如https://github.com/medcl/elasticsearch-analysis-ik)或Elasticsearch插件市场,找到与你Elasticsearch版本相对应的IK分词器版本。
    • 下载对应版本的IK分词器插件压缩包。

安装IK分词器

  1. 创建插件目录(如果尚未存在):
    • 在Elasticsearch的plugins目录下创建一个名为ik的文件夹,用于存放IK分词器的相关文件。例如,在Linux系统中,路径可能是/usr/share/elasticsearch/plugins/ik
  2. 解压IK分词器插件
    • 将下载的IK分词器插件压缩包解压到刚刚创建的ik文件夹中。在Linux系统中,可以使用unzip命令进行解压,如unzip elasticsearch-analysis-ik-x.x.x.zip -d /usr/share/elasticsearch/plugins/ik

配置(可选)

  • IK分词器通常不需要额外的配置即可使用,但如果你需要自定义词库或调整分词行为,可以在IK分词器的config目录下进行配置。

重启Elasticsearch

  • 安装完IK分词器后,需要重启Elasticsearch服务以使插件生效。在Linux系统中,可以使用systemctl restart elasticsearch命令重启Elasticsearch服务。

验证安装

  1. 检查插件列表
    • 重启Elasticsearch后,可以通过执行./elasticsearch-plugin list命令(在Elasticsearch的bin目录下)来检查已安装的插件列表,确认IK分词器是否已成功安装。
  2. 测试分词效果
    • 可以通过发送HTTP请求到Elasticsearch的_analyze API来测试IK分词器的分词效果。例如,使用curl命令发送一个包含中文文本的请求,并指定使用ik_max_wordik_smart分词器进行分词。


http://www.kler.cn/news/322461.html

相关文章:

  • 如何在谷歌浏览器上玩大型多人在线游戏
  • 【软考】结构化分析方法概述
  • 车载视频监控:安全生产与管理的新趋势
  • 笔记整理—linux进程部分(1)进程终止函数注册、进程环境、进程虚拟地址
  • 基于顺序表的通讯录(纯代码)
  • 「漏洞复现」誉龙视音频综合管理平台 RelMedia/FindById SQL注入漏洞
  • 【大模型-驯化】成功解决载cuda-11.8配置下搭建swift框架
  • VSCode rust文件中的api点击无法跳转问题
  • Request 原理
  • 的使用和内联函数
  • 【Spring Cloud】Spring Cloud 概述
  • 【计算机网络 - 基础问题】每日 3 题(十七)
  • 《JKTECH柔性振动盘:原理与多行业应用》东莞市江坤自动化科技有限公司
  • TOF系列—深度图滤波
  • 手搓一个Agent#Datawhale 组队学习Task3
  • Android常用C++特性之std::move
  • 【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版
  • 华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 6 撤回通知消息
  • tomcat 文件上传 (CVE-2017-12615)
  • 计算机知识科普问答--21(101-105)
  • 【FE】NPM——概述
  • 13年408计算机考研-计算机网络
  • 动态规划算法:13.简单多状态 dp 问题_打家劫舍II_C++
  • 搜索软件 Everything 的安装与使用教程
  • Vue使用Vue Router路由:通过URL传递与获取参数
  • C语言-IO
  • 卷积神经网络-最优模型
  • SSH 安全实战:保护您的远程访问
  • 嵌入式的核心能力-Debug调试能力(一)
  • 【分布式微服务】探索微服务架构下的服务治理