Elasticsearch摘要笔记

1、Elasticsearch是什么

1.1 概念:

Elasticsearch是由 Java语言开发基于Lucene的一款开源的搜索、聚合分析和存储引擎。同时它也可以称作是一种非关系型文档数据库。

image-20230305161034119

ES可以替代MySQL吗?

ElasticSearch和MySql分工不同,MySQL负责存储数据,ElasticSearch负责搜索数据

  • MySQL有事务性,而ElasticSearch没有事务性,所以你删了的数据是无法恢复的

  • ElasticSearch没有物理外键这个特性,如果你的数据强一致性要求比较高还是建议慎用

image-20230305161337185

1.2特点

  • 天生分布式、高性能(PB数据下可以秒读)、高可用、易扩展、易维护
  • 跨语言、跨平台:几乎支持所有主流编程语言,并且支持在“Linux、Windows、MacOs”多平台部署
  • 支持结构化、非结构化、地理位置搜索等

1.3适用场景

  • 海量数据的全文检索,搜索引擎、垂直搜索、站内搜索:
    • 百度、知乎、微博、CSDN
    • 导航、外卖、团购等软件
    • 以京东、淘宝为代表的垂直搜索
    • B站、抖音、爱奇艺、QQ音乐等音视频软件Glthub
  • 数据分析和聚合查询.
  • 日志系统 : ELK

Elasticsearch核心概念

image-20230305161535075

image-20230305161817337

image-20230305162010287

MySQL数据库查询存在的问题:

image-20230305153910496

image-20230305154253699

ES的倒排索引

image-20230305154901840

Elasticsearch数据的存储和搜索原理

image-20230305155606164

image-20230305155847211

1. 解决性能低问题:

如果倒排索引中tearm词条太多不会导致一样要遍历很久吗?不会

因为ES生成的到排序索引中,词条会排序,形成一颗树形结构,提升词条的查询速度。

2. 解决功能弱问题:

ES会先对查询关键字进行分词,再进行查询。