首先是对于标题的回答:因为ElasticSearch不支持事务!

什么是ElasticSearch?

ElasticSearch是一个分布式,高性能,高可用,可伸缩,RESTful风格的搜索和数据分析引擎,是一款近实时的全文搜索引擎,从添加数据到搜索只有1秒的延迟,查询是实时的,这么强大的功能源于它的数据结构:倒排索引.但是ES是不支持事务的

何为全文搜索?

全文搜索是指计算机索引程序通过扫描文章中的每一个词,对每一个词都建立一个索引,并记录该词在文章中出现的次数(频率)和位置,当用户查询的时候,检索程序就根据事先建立的索引进行查找,并将查找的结构返回给用户.

何为倒排索引?

倒排索引是帮助ES找到目标数据的数据结构,也就是各种查询都是从倒排索引里面查询的,需要注意的是这里的索引并不是MySQL数据库里面的索引

倒排索引里面重要的元素有四个:词条,文档ID,频率和位置

词条:数据存在索引库中是需要分词的,这也是ES查询的快的原因之一,有很多分词器可以使用

文档ID:指的是这个词条所在的那一行的ID

频率:频率指的是这个词条出现的次数

位置:位置指的是这个词条出现在哪个具体的位置

试想,你一篇文章的数据都一个一个分词放在了库里,等你搜索的时候要找到这个词不就是简简单单的事儿吗?

为什么不用MySQL实现全文搜索?

MySQL是传统的关系型数据库,是当下web应用开发中最流行的关系型数据库.是支持事务的!但是MySQL也是有缺点的,如果需要全文进行模糊搜索,MySQL性能是非常低的.例如如下场景:

假如有一张手机信息表,里面有1亿的数据,我想要在从中搜索我想要的手机,比如"华为手机""1万元以下",如果用MySQL实现的话可能会这样写:select * from phone where phone_brand like "%关键词%".这样做理论上是可以查到相关数据的,但是如果我这时候想换个说法,换成"1万元以下"和"华为手机",只要调换个顺序,Like关键词就匹配不到了.而且LIKe是全表扫描的操作,数据量大的情况下这是非常消耗性能的.这时候就需要用到ElasticSearch来解决

ElasticSearch和MySQL在工作中的应用场景:先保存一份数据到MySQL,再保存一份到ElasticSearch,在ES中搜索

为什么ElasticSearch这么厉害不能取代MySQL?

MySQL虽然在数据全文检索方面显得有些力不从心,但是因为它的事务功能特性,可以保证不会出现脏数据.而ES并不支持事务,所以不是很适合存储原始数据.所以在工作中都是两个一起使用,一方面利用MySQL保证原始数据的安全性,另一方面利用ElasticSearch来进行全文搜索.

有了ElasticSearch为什么还要用MySQL?-这篇文章告诉你相关推荐

  1. elasticsearch 数据类型_基于 MySQL Binlog 的 Elasticsearch 数据同步实践

    来源;马蜂窝 一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存 ...

  2. 全文搜索引擎Elasticsearch,这篇文章给讲透了

    之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的 ...

  3. Elasticsearch搜索引擎该怎么使用,这篇文章彻底讲透(荣耀典藏版)

    目录 前言 一.先说说 Lucene 二.ES 核心概念 2.1.集群(Cluster) 2.1.1.发现机制 2.1.2.节点的角色 2.1.3.脑裂现象 2.2.分片(Shards) 2.3.副本 ...

  4. 面试官出的MySQL索引问题,这篇文章全给你解决!

    原文链接:blog.ouyangsihai.cn >> MySQL的B 树索引的概念.使用.优化及使用场景 在看这篇文章之前,我们回顾一下前面的几篇关于MySQL的文章,应该对你读下面的文 ...

  5. 超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器

    超详细图解![MySQL进阶篇]存储过程,视图,索引,函数,触发器 1.1 下载Linux 安装包 1.2 安装MySQL 1.3 启动 MySQL 服务 1.4 登录MySQL 2\. 索引 2.1 ...

  6. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

    前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) ​ 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...

  7. 最全MySQL基础篇

    文章目录 导入表的问题 第三章_最基本的SELECT语句 1. SQL语言的规则和规范 1) 基本规则 2) SQL大小写规范(建议遵守) 3) 注释 4) 命名规则 2. 基本的SELECT语句 1 ...

  8. 黑马MySQL进阶篇笔记

    目录 MySQL进阶篇 一.存储引擎 1.1 Mysql体系结构图 1.2 存储引擎 1.概念 2.InnoDB 3.MyISAM 4.Memory 5.三种引擎对比 6.引擎的选择 1.3 安装my ...

  9. MySQL高级篇知识点——其它数据库日志

    目录 1.其他数据库日志 1.1.日志类型 1.2.日志的弊端 2.慢查询日志 (slow query log) 3.通用查询日志 (general query log) 3.1.问题场景 3.2.查 ...

最新文章

  1. ASIC设计的一些软件
  2. Python3快速入门(五)——Python3函数
  3. 使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程
  4. C++重载流插入运算符与流提取运算符
  5. 相机标准之onvif---开放型网络视频接口论坛onvif 简介
  6. mysql 条件触发器_具有条件的MySQL更新触发器(MySQL Update Trigger with Conditions)
  7. InnoDB与Myisam的六大区别
  8. Node.js开发框架Express4.x
  9. Python工具箱系列(十一)
  10. USB转串口电路之CH340G
  11. 简单自定义MVC优化
  12. canvas轨迹运动, 利用向量实现点匀速运动
  13. python中 {0:2.2f}与{1:2.2f}的区别
  14. MOOS-ivp 实验五 MOOS编程进阶(2)
  15. winrar v3.8 的注册码
  16. 夜深人静写算法(三十七)- 威尔逊定理
  17. DebugView工具使用方法
  18. Android零基础开发到项目实战
  19. SQL server-数据库的查询(初级)
  20. 区块链投资基金致力于银行的一亿美…

热门文章

  1. 【华人学者风采】俞汝勤 湖南大学
  2. ADS1220 24位高精度ADC芯片驱动
  3. 枚举方法在swtch中的用法
  4. 三分钟解决文档编辑难题-【文档编辑命令- cat echo vi/vim tail rmdir 】
  5. 程序员的幽默笑话(深意爆笑)
  6. java awt canvas_JAVA.AWT.CANVAS使用
  7. 快捷方式管理软件推荐
  8. 挺准的皮肤检测皱纹问答测试题
  9. 怎么知道是否已经被好友删了微信?
  10. 初始C语言——字符串,转义字符,循环语句