分布式搜索引擎(一) ES 基础知识

简介: ES 基础知识

ES基础信息

数据分类

我们生活中的数据总体分为两种,结构化数据和非结构化数据

结构化数据:指具有固定格式或者有限长度的数据,如数据库,元数据等

非结构化数据:指不定长或者无固定格式的数据,如邮件,word文档等磁盘上的文件

结构化数据搜索

常见的结构化数据也就是数据库中的数据

再数据库中搜索很容易实现,通常都是使用sql语句来进行查询,而且可以很快的得到查询结果

为什么数据库搜索很容易:因为数据库中的数据是规律的,有行有列而且数据格式,数据长度都是固定的

非结构化数据查询方法

顺序扫描法

在Windows上面搜索包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完为止,例如windows的搜索也可以搜索文件内容,只是相当慢

全文检索(Full-text Search)

用户通过查询索引库---->生成索引----->文档

全文检索是指计算机索引程序通过扫描文件中的每一个词,对每一个词建立一个索引,知名该词再文档中出现的次数和位置,,当用户查询时,检索程序就会根据实现建立的索引进行查找,并将查找结果反馈给用户的检索方案,这个过程类似于通过字典的目录查字的过程

将非结构化数据的一部分信息提取出来,重新组织,使其变得有一定的结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对比较快的目的,这部分从非结构化数据中提取出来的然后重新组织的信息,我们称之为索引

这种先建立索引,然后再对索引进行搜索的过程就叫做全局检索,虽然创建索引的过程也是非常好是的,但是索引一但创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建,索引是值得的

实现全文检索的方法

可以使用LUcene,来实现全文检索,Lucene是apache下的一个开发源代码的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言),Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索功能

lucene入门

Lucene适用的场景

在应用中为数据库中的数据提供全文检索实现

开发独立的搜索引擎服务,系统

Lucene的特性
  1. 稳定,索引性能高

    ​ 每小时能够索引150G以上的数据

    ​ 对内存的要求小,只需要1MB的堆内存

    ​ 增量索引和批量索引一样块

    ​ 索引的大小越为索引文本大小的20%-30%

  2. 高效,准确,高性能的搜索算法

    ​ 良好的搜索排序

    ​ 强大的查询方法支持:短语查询,通配符查询,临近查询,范围查询等

    ​ 支持字段搜索:如标题,作者,内容等

    ​ 可根据任意字段排序

    ​ 支持多个索引查询结果合并

    ​ 支持更新操作和查询操作同时进行

    ​ 支持高亮,join,分组结果功能

    ​ 速度快

    ​ 可拓展排序模块,内置包含向量空间模型,BM25模型可选

    ​ 可配置存储引擎

  3. 跨平台

    ​ 纯java编写

    ​ 作为apache开元许可下的开源项目,可以再商业或者开源项目中使用

    ​ lucene有多钟语言实现版(如C,C++,Python等)不仅仅是java

Lucene索引原理

image-20230509152901960.png

参考文档地址

https://blog.csdn.net/qq_45441466/article/details/120110444

ElasticSearch入门

定义

ElasticSearch简称ES,ES是一个分布式全文搜索引擎,为了解决原生lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案,ES的索引库管理支持依然是基于Apache Lucene(TM)的开源搜索引擎

ES也是用java开发并使用LUcene所谓其核心来实现所有的索引和搜索功能,他的是通过简单的RESTFul API来隐藏Lucene的复杂性,从而让全文索引变得简单

ES的特点

分布式的近实时文件存储,Mysql是实时的

能在分布式项目/集群中使用

本身支持集群拓展,可以拓展到上百台服务器

处理PB级结构化或者非结构化数据

简单的RestFul Api通信方式

支持各种语言的客户端:java, js

基于Lucene封装,使操作简单

ES中关键字说明

index->type->mapping->document->field

index:Mysql中的一张表

type:一个index中可以有多个Type,每个type的字段都是差不多的,但是有一些略微差别

mapping:一个type有一个mapping,如果说type是一个具体的表,index代表了多个Type同属的一个类型,mapping就是这个type的表结构定义

document:往index中的一个type里面写入一条数据,叫做一条document,一条document就代表了mysql中某个表里的一行数据,

field:每个document有多个Field,每个field就代表了document中的一个字段的值

目录
相关文章
|
3月前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
239 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
3月前
|
存储 分布式计算 分布式数据库
【专栏】云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境
【4月更文挑战第27天】本文探讨了云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境;分布式系统架构则通过多计算机协同工作,实现任务并行和容错。两者相互依存,共同推动企业数字化转型、科技创新、公共服务升级及数字经济发展。虚拟化、分布式存储和计算、网络技术是其核心技术。未来,深化研究与应用这些技术将促进数字化时代的持续进步。
134 4
|
27天前
|
负载均衡 监控 搜索推荐
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
22 1
|
2月前
|
存储 搜索推荐 Java
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
41 2
|
3月前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
178 7
|
3月前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch
|
3月前
|
SQL 搜索推荐 数据库
分布式搜索引擎_学习笔记_3
分布式搜索引擎_学习笔记_3
28 1
|
27天前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
30天前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
1天前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁
这篇文章介绍了如何在SpringBoot项目中整合Redis,并探讨了缓存穿透、缓存雪崩和缓存击穿的问题以及解决方法。文章还提供了解决缓存击穿问题的加锁示例代码,包括存在问题和问题解决后的版本,并指出了本地锁在分布式情况下的局限性,引出了分布式锁的概念。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁

热门文章

最新文章