• elasticsearch1


    请添加图片描述
    个人名片:

    博主酒徒ᝰ.
    个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
    本篇励志三人行,必有我师焉。

    请添加图片描述
    本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

    一、初识elasticsearch

    1. 了解ES

    什么是elasticsearch

    elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容

    在这里插入图片描述

    elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:
    elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。

    在这里插入图片描述

    elasticsearch的发展

    Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。
    官网地址:https://lucene.apache.org/

    Lucene的优势:
    易扩展
    高性能(基于倒排索引)
    Lucene的缺点:
    只限于Java语言开发
    学习曲线陡峭
    不支持水平扩展

    • 2004年Shay Banon基于Lucene开发了Compass
    • 2010年Shay Banon 重写了Compass,取名为Elasticsearch。
      官网地址: https://www.elastic.co/cn/

    相比与lucene,elasticsearch具备下列优势:

    • 支持分布式,可水平扩展
    • 提供Restful接口,可被任何语言调用

    为什么学习elasticsearch

    搜索引擎技术排名:
    Elasticsearch:开源的分布式搜索引擎
    Splunk:商业项目
    Solr:Apache的开源搜索引擎

    总结

    什么是elasticsearch?
    一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能
    什么是elastic stack(ELK)?
    是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
    什么是Lucene?
    是Apache的开源搜索引擎类库,提供了搜索引擎的核心API

    2. 倒排索引

    正向索引
    传统数据库(如MySQL)采用正向索引
    倒排索引
    elasticsearch采用倒排索引:

    • 文档(document):每条数据就是一个文档
    • 词条(term):文档按照语义分成的词语

    倒排索引中包含两部分内容:
    词条词典:记录所有词条,以及词条与倒排列表(Posting List)之间的关系,会给词条创建索引,提高查询和插入效率
    倒排列表:记录词条所在的文档id、词条出现频率 、词条在文档中的位置等信息

    • 文档id:用于快速获取文档
    • 词条频率(TF):文档在词条出现的次数,用于评分

    总结:

    什么是文档和词条?
    每一条数据就是一个文档
    对文档中的内容分词,得到的词语就是词条
    什么是正向索引?
    基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条
    什么是倒排索引?
    对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取到文档

    3. es的一些概念

    文档

    elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。
    文档数据会被序列化为json格式后存储在elasticsearch中。

    索引

    索引:相同类型的文档的集合
    映射:索引中文档的字段约束信息,类似表的结构约束

    在这里插入图片描述

    架构

    Mysql:擅长事务类型操作,可以确保数据的安全和一致性
    Elasticsearch:擅长海量数据的搜索、分析、计算

    总结:

    文档:一条数据就是一个文档,es中是Json格式
    字段:Json文档中的字段
    索引:同类型文档的集合
    映射:索引中文档的约束,比如字段名称、类型
    elasticsearch与数据库的关系:

    • 数据库负责事务类型操作
    • elasticsearch负责海量数据的搜索、分析、计算

    文档和字段

    elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在elasticsearch中:
    而Json文档中往往包含很多的字段,类似于数据库中的列。

    索引和映射

    索引,就是相同类型的文档的集合。

    例如:
    所有用户文档,就可以组织在一起,称为用户的索引;
    所有商品的文档,可以组织在一起,称为商品的索引;
    所有订单的文档,可以组织在一起,称为订单的索引;

    映射:

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

    mysql与elasticsearch

    MySQLElasticsearch说明
    TableIndex索引(index),就是文档的集合,类似数据库的表(table)
    RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
    ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
    SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
    SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD
    • Mysql:擅长事务类型操作,可以确保数据的安全和一致性

    • Elasticsearch:擅长海量数据的搜索、分析、计算

    因此在企业中,往往是两者结合使用:

    • 对安全性要求较高的写操作,使用mysql实现
    • 对查询性能要求较高的搜索需求,使用elasticsearch实现
    • 两者再基于某种方式,实现数据的同步,保证一致性
  • 相关阅读:
    智能别墅烟雾和粉尘感应报警系统的设计(任务书+开题+lunwen+翻译及原文+附录程序)
    由联合体union引出的大小端问题
    java(反射机制)
    年轻人想搞钱,这没什么好遮掩的
    黑马程序员spring+springMVC+Maven高级+springboot+MyBatisPlus总结之spring介绍和IoC
    AI系列:大语言模型的function calling(下)- 使用LangChain
    什么是ADC测试,能进行自动化测试吗?
    将el-table数据导出csv各式,纯前端实现
    深入解析JVM G1 垃圾回收器
    网络参考资料汇总(1)
  • 原文地址:https://blog.csdn.net/m0_65144570/article/details/132927838