1、Elasticsearch是什么
1.1 概念:
Elasticsearch是由 Java语言开发基于Lucene的一款开源的搜索、聚合分析和存储引擎。同时它也可以称作是一种非关系型文档数据库。
ES可以替代MySQL吗?
ElasticSearch和MySql分工不同,MySQL负责存储数据,ElasticSearch负责搜索数据
-
MySQL有事务性,而ElasticSearch没有事务性,所以你删了的数据是无法恢复的。
-
ElasticSearch没有物理外键这个特性,如果你的数据强一致性要求比较高还是建议慎用
1.2特点
- 天生分布式、高性能(PB数据下可以秒读)、高可用、易扩展、易维护
- 跨语言、跨平台:几乎支持所有主流编程语言,并且支持在“Linux、Windows、MacOs”多平台部署
- 支持结构化、非结构化、地理位置搜索等
1.3适用场景
- 海量数据的全文检索,搜索引擎、垂直搜索、站内搜索:
- 百度、知乎、微博、CSDN
- 导航、外卖、团购等软件
- 以京东、淘宝为代表的垂直搜索
- B站、抖音、爱奇艺、QQ音乐等音视频软件Glthub
- 数据分析和聚合查询.
- 日志系统 : ELK
Elasticsearch核心概念
MySQL数据库查询存在的问题:
ES的倒排索引
Elasticsearch数据的存储和搜索原理
1. 解决性能低问题:
如果倒排索引中tearm词条太多不会导致一样要遍历很久吗?不会
因为ES生成的到排序索引中,词条会排序,形成一颗树形结构,提升词条的查询速度。
2. 解决功能弱问题:
ES会先对查询关键字进行分词,再进行查询。