ELK_Elasticsearch基础介绍

news2024/11/14 14:02:15

目录

一、搜索是什么?

二、数据库做搜索的弊端

三、全文检索、倒排索引和Lucene

四、什么是Elasticsearch

1、Elasticsearch的功能

2、Elasticsearch的使用场景

3、Elasticsearch的特点

五、elasticsearch核心概念


一、搜索是什么?

概念:用户输入想要的关键词,返回含有该关键词的所有信息。

场景:

​ 1互联网搜索:谷歌、百度、各种新闻首页

​ 2站内搜索(垂直搜索):企业OA查询订单、人员、部门,电商网站内部搜索商品(淘宝、京东)场景。

二、数据库做搜索的弊端

问题出现

  • 存储问题。电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库(mycat)。
  • 性能问题:解决上面问题后,查询“笔记本电脑”等关键词时,上亿条数据的商品名字段逐行扫描,性能跟不上。
  • 不能分词。如搜索“笔记本电脑”,只能搜索完全和关键词一样的数据,那么数据量小时,搜索“笔记电脑”,“电脑”数据要不要给用户。

三、全文检索、倒排索引和Lucene

全文检索

全文索引时将存储在数据库中的整本书或整篇文章中的任意内容信息查找出来的技术。它可以根据需要获取全文中有关章,节,段,句,词等信息,也可以进行各种统计和分析。全文检索一般采用倒排索引来实现。

倒排索引

倒排索引。数据存储时,经行分词建立term索引库。见画图。

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

Lucene

就是一个jar包,里面封装了全文检索的引擎、搜索的算法代码。开发时,引入lucen的jar包,通过api开发搜索相关业务。底层会在磁盘建立索引库。

四、什么是Elasticsearch

官网:https://www.elastic.co/cn/products/elasticsearch

1Elasticsearch的功能

分布式的搜索引擎和数据分析引擎

搜索:互联网搜索、电商网站站内搜索、OA系统查询

数据分析:电商网站查询近一周哪些品类的图书销售前十;新闻网站,最近3天阅读量最高的十个关键词,舆情分析。

全文检索,结构化检索,数据分析

全文检索:搜索商品名称包含java的图书select * from books where book_name like "%java%"。

结构化检索:搜索商品分类为spring的图书都有哪些,select * from books where category_id='spring'

数据分析:分析每一个分类下有多少种图书,select category_id,count(*) from books group by category_id

对海量数据进行近实时的处理

分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索,经行并行查询,提高搜索效率。相对的,Lucene是单机应用。

近实时:数据库上亿条数据查询,搜索一次耗时几个小时,是批处理(batch-processing)。而es只需秒级即可查询海量数据,所以叫近实时。秒级。

2Elasticsearch的使用场景

国外:

  • 维基百科,类似百度百科,“网络七层协议”的维基百科,全文检索,高亮,搜索推荐
  • Stack Overflow(国外的程序讨论论坛),相当于程序员的贴吧。遇到it问题去上面发帖,热心网友下面回帖解答。
  • GitHub(开源代码管理),搜索上千亿行代码。
  • 电商网站,检索商品
  • 日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)
  • 商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅《java编程思想》的监控,如果价格低于27块钱,就通知我,我就去买。
  • BI系统,商业智能(Business Intelligence)。大型连锁超市,分析全国网点传回的数据,分析各个商品在什么季节的销售量最好、利润最高。成本管理,店面租金、员工工资、负债等信息进行分析。从而部署下一个阶段的战略目标。

国内:

百度搜索,第一次查询,使用es。

OA、ERP系统站内搜索。

3Elasticsearch的特点

可拓展性:大型分布式集群(数百台服务器)技术,处理PB级数据,大公司可以使用。小公司数据量小,也可以部署在单机。大数据领域使用广泛。

技术整合:将全文检索、数据分析、分布式相关技术整合在一起:lucene(全文检索),商用的数据分析软件(BI软件),分布式数据库(mycat)

部署简单:开箱即用,很多默认配置不需关心,解压完成直接运行即可。拓展时,只需多部署几个实例即可,负载均衡、分片迁移集群内部自己实施。

接口简单:使用restful api经行交互,跨语言。

功能强大:Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能,如全文检索,同义词处理,相关度排名。

五、elasticsearch核心概念

1luceneelasticsearch的关系

Lucene:最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂

Elasticsearch:基于lucene,封装了许多lucene底层功能,提供简单易用的restful api接口和许多语言的客户端,如java的高级客户端(Java High Level REST Client)和底层客户端(Java Low Level REST Client)

2elasticsearch的核心概念

NRTNear Realtime):近实时

两方面:

写入数据时:过1秒才会被搜索到,因为内部在分词、录入索引。

es搜索时:搜索和分析数据需要秒级出结果。

Cluster:集群

包含一个或多个启动着es实例的机器群。通常一台机器起一个es实例。同一网络下,集名一样的多个es实例自动组成集群,自动均衡分片等行为。默认集群名为“elasticsearch”。

Node:节点

每个es实例称为一个节点。节点名自动分配,也可以手动配置。

Index:索引

包含一堆有相似结构的文档数据。

索引创建规则

仅限小写字母

不能包含\、/、 *、?、"、<、>、|、#以及空格符等特殊符号

从7.0版本开始不再包含冒号

不能以-、_或+开头

不能超过255个字节(注意它是字节,因此多字节字符将计入255个限制)

 Document:文档

es中的最小数据单元。一个document就像数据库中的一条记录。通常以json格式显示。多个document存储于一个索引(Index)中。

例如:book document

{

  "book_id": "1",

  "book_name": "java编程思想",

  "book_desc": "Java的基础语法到最高级特性(深入的[面向对象](https://baike.baidu.com/item/面向对象)概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。",

  "category_id": "2",

  "category_name": "java"

}

Field:字段

就像数据库中的列(Columns),定义每个document应该有的字段。

Type:类型

每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field。

注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,ES官方将在ES9.0版本中彻底删除type。本教程typy都为_doc。

shard:分片

index数据过大时,将index里面的数据,分为多个shard,分布式的存储在各个服务器上面。可以支持海量数据和高并发,提升性能和吞吐量,充分利用多台机器的cpu。

replica:副本

在分布式环境下,任何一台机器都会随时宕机,如果宕机,index的一个分片没有,导致此index不能搜索。所以,为了保证数据的安全,我们会将每个index的分片经行备份,存储在另外的机器上。保证少数机器宕机es集群仍可以搜索。

能正常提供查询和插入的分片我们叫做主分片(primary shard),其余的我们就管他们叫做备份的分片(replica shard)。

es6默认新建索引时,5分片,2副本,也就是一主一备,共10个分片。所以,es集群最小规模为两台。

六、elasticsearch核心概念 vs. 数据库核心概念

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

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

相关文章

vue2与vue3面试题之区别

目录vue2与vue3面试题之区别01&#xff1a;数据双向绑定&#xff08; proxy 替代 defineProperty&#xff09;02&#xff1a;生命周期函数的更换03&#xff1a;vue3的新特性04&#xff1a;缓存组件与更新组件05&#xff1a;ref和reactive的区别06&#xff1a;watch和watchEffec…

测试篇(五):什么是自动化测试、自动化测试分类、selenium工具、第一个自动化测试程序

目录一、什么是自动化测试二、自动化测试分类2.1 单元测试2.2 UI自动化测试三、selenium工具3.1 selenium的介绍3.2 环境部署3.3 selenium的常用方法四、第一个自动化测试用例一、什么是自动化测试 在日常生活中我们会见到&#xff0c;自动化的水龙头、无人驾驶汽车、自动化的…

Mysql,使用FIND_IN_SET()函数处理多表关联问题.

这里有 user表、teacher表&#xff0c;其中 teacher.user_ids 字段中的值是 user.id 值以英文半角逗号拼接而来。现在&#xff0c; 我们需要在查询 teacher 表数据时&#xff0c;将 user.name 的值也查询出来。使用以下的SQL语句&#xff0c;即可实现需求。SELECTGROUP_CONCAT(…

系统编程中的进程的概念No.1

引言&#xff1a; 北京时间2023/1/28&#xff0c;本小编04年1月9日出生&#xff0c;今天第一次理解到进程的概念&#xff0c;所以我们接下来就学习一下什么是进程以及和进程相关的一些知识。首先我们想要了解进程以及其相关的知识&#xff0c;我们要先理解一下其它方面的知识&…

【2】Linux基础命令

学习笔记目录 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 Linux的目录结构 Linux的目录结构是一个树形结构&#xff0c;没有盘符这个概念&#x…

常用算法分类

按照使用场景分类排序算法&#xff0c;如冒泡排序&#xff0c;快速排序等&#xff0c;用于将一组数据按照特定规则排序。搜索算法&#xff0c;如二分查找算法&#xff0c;深度优先搜索算法等&#xff0c;用于在一组数据中查找特定元素。图论算法&#xff0c;如最短路径算法&…

Claude的2022年终总结——关于2022和Claude的四个问题

文章目录前言1. 我算是合格的开发者了吗2. 我算是正式的游戏人了吗3. 我算是成熟的社会人了吗4. 我算是什么样的写作者呢最后前言 2022年的这个时候&#xff0c;我也是在准备着年终总结&#xff0c;只不过应公司要求&#xff0c;准备述职晋升&#xff0c;是抱着升职加薪&#…

行为型模式 - 命令模式Command

模式的定义与特点 命令模式&#xff08;Command Pattern&#xff09;&#xff0c;是将一个请求封装成一个对象&#xff0c;从而使您可以用不同的请求对客户进行参数化。命令模式是把发出命令的责任和执行命令的责任分割开&#xff0c;委派给不同的对象。命令模式允许请求的一方…

设计一个消息队列的思考点

导图所以主要考虑的点是&#xff1a;P1.1. MQ 要有基础的消息管理能力&#xff08;CRUD&#xff09;P1.2. MQ 要有产消日志P2. MQ将消息存储成功才能响应成功P3.1 MQ将消息存储 分片存储P3.2 扩容的实现思路(如何在扩容的时候更方便高效)P4.1 数据要有副本&#xff08;分片副本…

【27】C语言 | 指针进阶

目录 一、指针概念 二、字符指针 三、指针数组 四、数组指针 五、数组参数、指针参数 六、函数指针 七、函数指针数组 八、回调函数 一、指针概念 1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。2.指针的大小是固定的4/8个字节(32位平…

Java ccflow 代码

草稿规则目录概述需求&#xff1a;设计思路实现思路分析1.URL管理参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive. happ…

盖子的c++小课堂——第十四讲:指针

前言 作者&#xff1a;大家好鸭&#xff0c;想必大家看到标题都有感到有一丝奇怪吧&#xff0c;其实&#xff0c;今天主要讲一些运算符 粉丝&#xff1a;啊……嗯嗯嗯 作者&#xff1a;那开始吧~~ 内存地址运算符& 粉丝&#xff1a;讲这个干嘛&#xff0c;我都会了~~ …

Jmeter场景组合测试——多个线程组的设计方案

我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作&#xff0c;今天我来重点讲解一下jmeter多个线程组在测试中的应用&#xff0c;这也是关于jmeter性能测试面试过程中的进阶问题&#xff0c;希望能够帮到大家来解决工作中不同的测试需求。线程组中的…

Rust个人学习之有意思的所有权

在Rust中是没有内存垃圾回收机制(GC)的&#xff0c;那Rust是如何保障内存安全的呢&#xff1f;这就引出了“所有权”这个概念。 我们看下下面这段伪代码 let s "helloString"; t s; print(s); 在之前我们学习的语言中&#xff0c;比如C语言&#xff0c;对于上述伪…

人工智能原理复习 | 产生式系统

文章目录 一、概述二、八数码问题三、特殊的产生式系统四、一些补充CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 通过学习人工智能原理课程了解基本的人工智能问题的求解方法和原理。 一、概述 产生式系统(Production System):是构造知识型系统和建立认知模型时常用的知…

用canvas绘制微信小程序海报页面并保存相册-适用微信原生

微信小程序绘制海报并保存相册 tip&#xff1a;代码中使用的是uni的api 如果使用原生微信小程序开发&#xff0c;可以把uni更换成wx使用 文章目录微信小程序绘制海报并保存相册前言一、分析需求二、准备数据三、编码开始html部分解析&#xff1a;js部分1、准备好数据后开始绘制…

王道操作系统笔记(三)———— 处理机调度

文章目录一、调度的概念1.1 调度的基本概念1.2 调度的层次1.3 补充&#xff1a;七状态模型二、调度的时机、切换与过程2.1 进程调度的时机2.2 狭义进程调度、进程切换、广义进程调度2.3 进程切换的过程2.4 补充&#xff1a;闲逛进程三、进程的调度方式四、调度算法的评价指标五…

【通信原理(含matlab程序)】实验四 升余弦滚降基带传输

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步~ &#x…

【Novel AI】使用绘画AI构建unity游戏资源

请勿在商业用途中使用下面的示例图中的任何资源&#xff01; 1. 设想&#xff1a; 首先根据自己的设想&#xff0c;创造一些角色原型&#xff0c;角色特点等等 这里我根据网络上找的一些参考&#xff0c;我大概想要的是比较特别的一个警察的猫人形的动物角色&#xff1b; 2…

网络编程(TCP+UDP)(1)

咱们的一个TCP服务器&#xff0c;是否可以让一个UDP客户端连接上呢&#xff1f; 1)TCP和UDP&#xff0c;他们无论是API代码&#xff0c;还是协议底层的工作过程&#xff0c;都是差异巨大的&#xff0c;不是单纯的把流转化成数据包就可以的&#xff1b; 2)描述一次通信&#xff…