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 提供了强大的地理空间搜索功能,可以用于处理和分析地理数据,适用于需要地理空间分析的应用程序,如地图服务、交通管理、位置跟踪等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ansible的role目录结构及用法

目录 目录结构介绍案例 目录结构介绍 可以通可以通过使用 ansible-galaxy 命令再当前目录自动生成 role 的基本目录结构。 myrole为文件名(角色名) ansible-galaxy init myrole如果没有安装Ansible Galaxy,你可以使用以下命令安装&#xff…

Python 函数的参数形式

Python 函数的参数形式 Python 函数的参数有多种形式,每种形式在不同的场景下使用。我们主要介绍以下几种: 位置参数关键字参数默认参数可变位置参数(*args)可变关键字参数(**kwargs) 1. 位置参数 位置…

python题解

宽度与对齐 输出455、-123、987654,宽度为5,分别左对齐和右对齐 格式 输入格式: 无 输出格式: 输出为整型,空格分隔。每个数的输出占一行 样例 1 输入: 无 复制 输出: 455 455 -123 -123 98…

Vue的SSR和预渲染:提升首屏加载速度与SEO效果

引言 在现代Web应用开发中,首屏加载速度和搜索引擎优化(SEO)是衡量应用性能的重要指标。Vue.js 作为流行的前端框架,提供了服务器端渲染(SSR)和预渲染(prerendering)两种技术来提升这些指标。本文将深入探讨如何使用 Vue 的 SSR 和预渲染技术,提供详细的代码示例和最…

FFmpeg源码:av_probe_input_format3函数分析

一、av_probe_input_format3函数的声明 av_probe_input_format3函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为5.0.3)的头文件libavformat/avformat.h中: /*** Guess the file format.** param is_opened Whether the file is already…

Go语言的数据结构

数据结构 数组 支持多维数组,属于值类型,支持range遍历 例子:随机生成长度为10整数数组 package main import ("fmt""math/rand" ) // 赋值 随机获取100以内的整数 func RandomArrays() {var array [10]int //声明var…

【MySQL进阶篇】锁:全局锁、表级锁以及行级锁

一、锁的概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须要解决的一个问题&am…

C语言11 结构体、共用体、枚举和重定义

目录 结构体(Struct) 定义结构体 声明和初始化结构体变量 访问结构体成员 嵌套结构体 指向结构体的指针 共用体(Union) 定义共用体 声明和使用共用体 重定义(Typedef) 定义类型别名 使用类型别…

Person Re-Identification(Re-ID)的分类

行人重识别(Person Re-Identification, Re-ID)是计算机视觉和深度学习中的一个重要任务,旨在通过图像或视频中的行人外观信息来识别和追踪同一个人在不同摄像头视角下的出现。根据任务的不同,行人重识别可以分为以下几类&#xff…

室内消防逃生通道占用检测AI算法:科技筑防,守护生命通道

随着城市化进程的加快,高层建筑和大型公共场所的数量急剧增加,消防安全问题愈发凸显。其中,室内消防逃生通道的畅通性直接关系到火灾发生时人员的安全疏散。然而,由于各种原因,如杂物堆放、车辆停放等,消防…

nacos 2.3.2 若依使用mysql

1)从官网下载 nacos,如果下载慢,关注从本人发布上传下载也可以 2)修改配置文件 【config】-【application.properties】 ### Deprecated configuration property, it is recommended to use spring.sql.init.platform replaced.…

SpringBoot实现定时任务-@Scheduled

在Java编程中,Scheduled 注解是 Spring Framework 提供的一个用于定时任务的注解。 Scheduled可以将一个方法配置为定时执行的任务。 以下是一些基本用法: 1.固定速度 fixedRate指两次任务的开始时间间隔。所以存在第二次任务开始时,第一…

LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)

给你一个下标从 0 开始的字符串 num ,表示一个非负整数。 在一次操作中,您可以选择 num 的任意一位数字并将其删除。请注意,如果你删除 num 中的所有数字,则 num 变为 0。 返回最少需要多少次操作可以使 num 变成特殊数字。 如…

mysql各个参数调整

innodb_lock_wait_timeout 事务锁释放时间

前端知识--前端访问后端技术Ajax及框架Axios

一、异步数据请求技术----Ajax Ajax是前端访问后端的技术,为异步请求(不刷新页面,请求数据,只更新局部数据)。 例如:在京东网站中搜索电脑,就会出现一些联想搜索,但此时页面并没有…

【技术支持】canvas转换为图片或PDF保存电脑

注意:有些网站可能由于canvas跨域污染问题,无法使用toBlob,所以无法转换 开发者工具中,选中需要转换的canvas元素(使其可以使用$0语法) 控制台输入如下代码 $0.toBlob(function (blob) {var link document…

Window下CLion实现本机通过socket通信-C++

1.引言-什么是socket socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字&#xff…

go语言开发Prometheus Exporter(DM数据库)

一、介绍 源码步骤基于dameng_exporter源码讲解,看完本篇文章可以直接进行二次开发。 dameng exporter的开源地址:https://github.com/gy297879328/dameng_exporter(可直接对接prometheusgrafana 提供表盘) 开发一个exporter 其…

Linux中的三类读写函数

文件IO和标准IO的区别 遵循标准: 文件IO遵循POSIX标准,主要在类UNIX环境下使用。标准IO遵循ANSI标准,具有更好的可移植性,可以在不同的操作系统上重新编译后运行。可移植性: 文件IO的可移植性相对较差,因为…

基于大模型零代码1小时完成国标数据分级分类近义词库构建及思考

1. 任务背景及困难分析 因项目要求,需要对国家标准国民经济行业分类-GB/T 4754-2017【1】进行近义词库的构建,时间非常紧,只给了很短时间进行处理,目标是构建一份中等粒度的行业近义词库。 搁在以前,可能需要点时…