ElasticSearch基础入门,白话es

ElasticSearch是一个搜索服务器。以下简称es

作用: 进行搜索

那么问题来了,mysql不是也能搜索吗,为何要用es?

小数据量下,Mysql是完全可以胜任的,可以完成搜索,此时可以不用es;但是在 大数据量(百万千万甚至上亿) 的前提下,会有以下几个问题:

  1. 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低
  2. 功能弱:如果以”华为手机“作为条件,可能查询不出来想要的数据

而es可以完美解决以上问题:

  1. es可以自动对条件进行分词。
    比如华为手机,可以分成华为手机、华为、手、手机等词语。这样,搜索匹配的范围就大多了。
  2. es的倒排索引,也叫反向索引。

倒排索引将文档进行分词,形成词条和id的对应关系即为反向索引。

以唐诗为例,请说出包含“前”的诗句
你可能一下子说不出来,但是,让你背一下《静夜思》,你肯定会。

正向索引:由《静夜思》–>窗前明月光—>“前”字

反向索引:“前”字–>窗前明月光–>《静夜思》
这种由诗名联想到诗句再到句中词的,就称为正向索引;
而反向索引正好相反,是由词到诗句再到诗名

反向索引的实现就是对诗句进行分词,分成单个的词,由词推句,即为反向索引

生成的倒排索引中,词条会排序,形成一颗树形结构(和mysql索引一样),提升词条的查询速度

既然es那么好用,是不是可以替换掉mysql之类的数据库呢?

先说下答案:不要,因为它们的分工是不一样的。 一般在工作中,都是由mysql负责存储数据,然后再将数据进行同步到es,然后再从es中进行搜索。

Mysql和Es的区别如下:

  1. mysql有事务性,而es没有事务性,所以,你删了的数据是无法恢复的。
  2. es没有物理外键,所以,对数据强一致性要求比较高时慎用
 总结:es和mysql分工不同,mysql负责存储数据,es负责搜索数据。
      es和mysql分工不同,mysql负责存储数据,es负责搜索数据。
      es和mysql分工不同,mysql负责存储数据,es负责搜索数据.

es在架构中的位置:

ElasticSearch基础入门,白话es_第1张图片

应用场景

•搜索:海量数据的查询

•日志数据分析

•实时数据分析

你可能感兴趣的:(elasticSearch,es,mysql,elasticsearch,搜索引擎,mysql)