Elasticsearch概念及ELK安装

1、Elasticsearch是什么

它是elastic技术栈中的一部分。完整的技术栈包括:

  • Elasticsearch:用于数据存储、计算和搜索

  • Logstash/Beats:用于数据收集

  • Kibana:用于数据可视化

整套技术栈被称为ELK,经常用来做日志收集、系统监控和状态分析等

2、Elasticearch的安装步骤

拉取镜像命令:docker pull elasticsearch:7.12.1

创建容器命令:

docker run -d \
  --name es \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  -e "discovery.type=single-node" \
  -v es-data:/usr/share/elasticsearch/data \
  -v es-plugins:/usr/share/elasticsearch/plugins \
  --privileged \
  --network hm-net \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.12.1

安装完成后,访问9200端口,即可看到响应的Elasticsearch服务的基本信息:

3、Kibana的安装步骤

拉取镜像命令:docker pull kibana:7.12.1

创建容器命令:

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601  \
kibana:7.12.1

安装完成后,直接访问5601端口,即可看到控制台页面:

 4、IK分词器的安装

ik下载地址:https://release.infinilabs.com/

在下面这个目录下载与你Elasticearch版本一致的zip,解压到无中文的目录下

使用命令查看之前安装的Elasticsearch容器的plugins数据卷目录

docker volume inspect es-plugins

 应该是这个目录/var/lib/docker/volumes/es-plugins/_data,将刚刚解压的ik文件夹上传到这个目录下

最后重启es容器

重启es容器:docker restart es

 测试

访问kibana的dev tools进行测试

 IK分词的ik_max_word:最细粒度切分

我们使用IK分词的智能语义切分

5、为什么要学习Elasticearch?

之所以学习Elasticearch是因为他有独特的搜索引擎,可以对海量数据达到最适配的内容查找

倒排索引

倒排索引中有两个非常重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息

  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条,例如"今天天气还不错"这样一个简单的句子就可以分为今天,天气,天天,还 ,不错,错等等这样的词条。

每一条数据是一个文档,

创建表,每行数据包括词条、词条所在文档id、位置等信息

这些文档会有唯一标识,当使用分词器后,该文档就是这些词条的集合

6、Elasticearch的处理流程

流程描述:

1)用户输入条件"华为手机"进行搜索。

2)对用户输入条件分词,得到词条:华为手机

3)拿着词条在倒排索引中查找(由于词条有索引,查询效率很高),即可得到包含词条的文档id:1、2、3

4)拿着文档id到正向索引中查找具体文档即可(由于id也有索引,查询效率也很高)。

7、Elasticearch的基础概念

文档(Document)

在Elasticsearch中,文档是信息的基本单位,类似于关系数据库中的一行记录。每个文档由一个唯一的ID标识,并存储为JSON对象。文档可以包含多个字段,每个字段都有其数据类型和值。

例如,一个文档可能代表一个用户的个人信息,包括姓名、年龄、电子邮件地址等字段。

字段(Field)

字段是文档中的单个数据项,类似于关系数据库中的列。每个字段都有其名称和数据类型,例如字符串、整数、日期或地理坐标等。

文本字段(Text Field):用于全文搜索的非结构化文本数据。

关键词字段(Keyword Field):用于结构化内容,如精确匹配的标签或标识符。

数值字段(Numeric Field):用于存储数值数据,包括整数和浮点数。

日期字段(Date Field):用于存储日期和时间。、

索引(Index)

索引是文档的集合,类似于关系数据库中的数据库。一个索引有一个名称,并且可以包含多个文档。索引用于组织和搜索数据

  • 所有用户文档,就可以组织在一起,称为用户的索引;

  • 所有商品的文档,可以组织在一起,称为商品的索引;

  • 所有订单的文档,可以组织在一起,称为订单的索引;

因此,我们可以把索引当做是数据库中的表。

映射(Mapping)

数据库的表会有约束信息,用来定义表的结构、字段的名称、类型等信息。因此,索引库中就有映射(mapping),是索引中文档的字段约束信息,类似表的结构约束。

8、Elasticsearch与mysql的区别

mysql更适合精确查找,每条数据在数据库中都有唯一的存储位置,也就是唯一标识

Elasticearch更适合适配查找,根据内容对数据库里的数据进行匹配,查找相关的数据

最大的区别就是索引不同,所以适用场景也不相同,

8.1、索引对比

mysql使用的正向索引,Elasticearch使用的倒排索引

正向索引

优点:可以给多个字段创建索引

           根据索引字段搜索、排序速度非常快

缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引

优点:根据词条搜索、模糊搜索时,速度非常快

缺点:只能给词条创建索引,而不是字段

           无法根据字段做排序

 8.2、属性对比

MYSQLElasticearch说明

Table

Index

索引(index),就是文档的集合,类似数据库的表(table)

Row

Document

文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式

Column

Field

字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)

Schema

Mapping

Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)

SQLDSL

DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

9、Elasticearch的适用场景

  • 全文搜索
  • 利用 Elasticsearch 的全文搜索能力,可以快速检索大量文本数据中的关键词或短语。这对于搜索引擎、电子商务平台的产品搜索、企业文档管理系统等应用非常适用。
  • 日志和数据分析
  • Elasticsearch 常用于处理和分析日志数据,它可以高效地存储、索引和搜索来自服务器、应用程序和网络设备的日志信息,帮助进行监控、故障排查和安全分析。
  • 实时数据监控
  • 由于其快速的索引和搜索能力,Elasticsearch 适合用于实时数据监控系统,比如金融交易监控、网络安全监控等,能够快速响应并分析实时数据流。
  • 内容推荐系统
  • Elasticsearch 可以用于构建推荐系统,通过分析用户行为和偏好,提供个性化的内容推荐,这在新闻聚合平台、在线市场和社交媒体等领域非常常见。
  • 地理信息系统(GIS)
  • Elasticsearch 提供了强大的地理空间搜索功能,可以用于处理和分析地理数据,适用于需要地理空间分析的应用程序,如地图服务、交通管理、位置跟踪等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/870181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型-GPT-Generative Pre-Training

一、背景信息: GPT是2018 年 6 月由OpenAI 提出的预训练语言模型。 GPT可以应用于复杂的NLP任务中,例如文章生成,代码生成,机器翻译,问答对话等。 GPT也采用两阶段的训练过程,第一阶段是无监督的方式来预训…

HarmonyOS 请求相应HTTPS概览

1.HTTP概述 请求和响应 2.HTTP请求开发步骤 2.1.module.json5中添加 ohos.permission.INTERNET 2.2.导入http模块 2.3.创建htppt请求 2.4.发起请求 2.5.处理响应 2.6.销毁http对象 3.几个基本概念: 3.1.Webview:提供We…

git 版本回退-idea

1、选中项目,右键,打开 git历史提交记录 2、选中想要回退的版本,选择 hard(不保留版本记录) 3、最终选择强制提交(必须强制) OK,搞定

被问到MQ消息已丢失,该如何处理?

在分布式系统中,消息中间件(如 RabbitMQ、RocketMQ、Kafka、Pulsar 等)扮演着关键角色,用于解耦生产者和消费者,并确保数据传输的可靠性和顺序性。尽管我们通常会采取多种措施来防止消息丢失,如消息持久化、…

【Docker】CentOS7环境下的安装

环境展示 安装 配置仓库 sudo yum install -y yum-utils # docker官方key文件下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 建议使用阿里云key文件下载 sudo yum-config-manager --add-repo https://mirrors.aliyun.…

Jacoco 单元测试配置

前言 编写单元测试是开发健壮程序的有效途径,单元测试写的好不好可以从多个指标考量,其中一个就是单元测试的覆盖率。单元测试覆盖率可以看到我们的单元测试覆盖了多少代码行、类、分支等。查看单元测试覆盖率可以使用一些工具帮助我们计算,…

ElMessage自动引入,样式缺失和ts esline 报错问题解决

一. 环境 "unplugin-auto-import": "^0.17.6", "vue": "^3.3.8", "vite": "^5.0.0", "typescript": "^5.2.2",二. ElMessage样式缺失问题. 以下有两种解决方法 方法一: 配置了自动引用后…

Chrome谷歌浏览器Console(控制台)显示文件名及行数

有没有这样的困扰?Chrome谷歌浏览器console(控制台)不显示编译文件名及行数? 设置(Settings)- > 忽略列表(lgnore List)-> 自定义排除规则(Custom exclusion rules) 将自定义排除规则…

3.1、数据结构-线性表

数据结构 数据结构线性结构线性表顺序存储和链式存储区别单链表的插入和删除练习题 栈和队列练习题 串(了解) 数据结构 数据结构该章节非常重要,上午每年都会考10-12分选择题下午一个大题 什么叫数据结构?我们首先来理解一下什…

算法与算法分析

目录 一.前言 二.算法的特性和要求 三.分析算法--时间效率 四. 分析算法--空间效率 一.前言 算法就是对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中,每个指令表示一个或多个操作。总而言之,我们数据结构就是通过算法实现操…

记录|C# winform布局学习

目录 前言一、自适应布局Step1. 添加AutoAdaptWindowsSize类Step2. Form中引用Step3. 创建SizeChanged事件函数Step4. 在Fram.Disiger中添加 更新时间 前言 参考视频: C#5分钟winform快速自适应布局 参考文章: 其他参考: 写这篇文章&#xff…

Elasticsearch:Java ECS 日志记录 - log4j2

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松将日志格式化为与 ECS 兼容的 JSON。ECS 兼容的 JSON 日志记录可以帮我们简化很多分析,可视化及解析的工作。在今天的文章里,我来详述如何在 Java 应用里生成 ECS 相兼容的日志。 …

为什么样本方差(sample variance)的分母是 n-1?

样本均值与样本方差的定义 首先来看一下均值,方差,样本均值与样本方差的定义 总体均值的定义: μ 1 n ∑ i 1 n X i \mu\frac{1}{n}\sum_{i1}^{n} X_i μn1​i1∑n​Xi​ 也就是将总体中所有的样本值加总除以个数,也可以叫做总…

【PHP】系统的登录和注册

一、为什么要学习系统的登录和注册 系统的登录和注册可能存在多种漏洞,这些漏洞可能被恶意攻击者利用,从而对用户的安全和隐私构成威胁。通过学习系统的登录和注册理解整个登录和注册的逻辑方便后续更好站在开发的角度思考问题发现漏洞。以下是一些常见…

学习小型gpt源码(自用)

数据集构建_哔哩哔哩_bilibili (b站上有一系列课,从数据处理到模型构建和训练使用) 什么是batch? 为什么一个batch内的句子要一样长? 不同batch的长度可以不一样,但是同一个batch内长度一样!…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQLMongo,部署安装好之后我本来是找了一个web端的在线连接数据库的工具,但是使用过程中并不丝滑,最终还是选择了使用 DBeaver ,然后发现 mongo 还需要许可,又折…

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件,我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间,还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而,当我们需要通过邮件发送或上传大文件时&a…

vue3 动态el-table表格 动态数据 新增修改删除的简单判断

<template><div class"app-container"><el-form:model"queryParams"ref"queryRef":inline"true"v-show"showSearch"label-width"68px"><el-form-item label"年份选择" prop"…

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

iOS ------ Block的相关问题

Block的定义 Block可以截获局部变量的匿名函数&#xff0c; 是将函数及其执行上下文封装起来的对象。 Block的实现 通过Clang将以下的OC代码转化为C代码 // Clang xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m//main.m #import <Foundation/Foundation.…