首页 > 数据库 >MySQL和Elasticsearch使用场景

MySQL和Elasticsearch使用场景

时间:2024-10-22 13:42:55浏览次数:1  
标签:搜索 场景 索引 文档 MySQL Elasticsearch 数据

来源:https://www.zhihu.com/question/637732937
ES的底层实现:倒排索引
正排索引(Forward Index)的实现方式为,通过文档ID去查找整个文档内容,适用于全部文档遍历或根据某个文档ID查找内容的场景。
而倒排索引(Inverted Index)的实现方式,则是通过文档中的关键词去查找文档ID列表,这也就是其非常适用于全文检索的原因。
ES复杂查询的实现方式和全文检索比较类似,同样是用到了倒排索引 + 正排索引的实现机制。
当将表中的数据保存到ES时,ES会为表中的每个字段都建立一个倒排索引。

MySQL和Elasticsearch是两种不同类型的数据存储和检索系统,它们各有优势和应用场景。
### MySQL:MySQL是一个关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据管理。
MySQL非常适合处理结构化数据,并且在以下方面表现优异:
- 事务处理:MySQL支持ACID(原子性、一致性、隔离性、持久性)事务,非常适合需要事务支持的应用,如金融服务。
- 复杂查询:MySQL能够处理复杂的SQL查询,包括多表连接、子查询、窗口函数等。
- 数据完整性:通过外键等机制,MySQL能够强制实施数据的完整性约束。
- 成熟稳定:作为一个成熟的数据库解决方案,MySQL有广泛的社区支持和丰富的文档资源

### Elasticsearch:Elasticsearch是一个基于Lucene构建的开源搜索引擎,它被设计用来快速地、在近实时地情况下处理大量数据,并支持复杂的数据分析。
Elasticsearch在以下方面表现优异:
- 全文搜索:Elasticsearch提供了强大的全文搜索功能,能够快速地对大量文本进行搜索。
- 水平扩展:Elasticsearch可以通过添加更多节点来轻松扩展,处理PB级别的数据。
- 实时分析:Elasticsearch提供了聚合功能,可以在搜索时进行实时数据分析。
- 高可用性和分布式:Elasticsearch天生支持分布式,可以在多个节点之间复制数据,提高系统的可用性和容错能力。
### 为什么需要Elasticsearch:尽管MySQL在数据存储和管理方面表现出色,但在以下场景中,Elasticsearch可能是更好的选择:
- 当需要对大量文本数据进行快速全文搜索时。
- 当系统需要处理日志、事件或其他机器生成数据的实时分析和可视化时。
- 当应用需要水平扩展以处理大量数据时。
- 当需要快速的搜索响应时间和近实时的索引更新时。
### 结论:MySQL和Elasticsearch各有所长,它们可以单独使用,也可以结合在一起使用,以利用各自的优势。
例如,可以使用MySQL存储应用的主要事务数据,同时使用Elasticsearch提供全文搜索和日志分析功能。

MySQL 系列文章:https://www.ddkk.com/zhuanlan/db/mysql/3/1.html
ElasticSearch 系列文章:https://www.ddkk.com/zhuanlan/search/elasticsearch/1/1.html
ES查询常用语法:https://blog.csdn.net/jiayoudangdang/article/details/128520075

标签:搜索,场景,索引,文档,MySQL,Elasticsearch,数据
From: https://www.cnblogs.com/xsj1989/p/18492523

相关文章

  • Linux安装mysql
    LINUX安装MYSQL详细教程(两种安装方法) 参考:https://www.cnblogs.com/csjoz/p/18178796Linux之Mysql安装配置第一种:Linux离线安装Mysql(提前手动下载好tar.gz包)第二种:通过yum安装配置Mysql(服务器有网络)第一种:tar.gz包安装1、查看是否已经安装Mysqlrpm-qa|grepmysql如果......
  • Linux卸载mysql
     (一)linux卸载mysql要在Linux系统中卸载MySQL,可以使用包管理器。以下是基于不同Linux发行版的卸载命令示例:对于基于Debian的系统(如Ubuntu),使用以下命令:sudoapt-getremove--purgemysql-servermysql-clientmysql-commonsudoapt-getautoremovesudoapt-getautoclean对于......
  • ES6中的Set数据结构的常用方法和使用场景
    ES6中的Set数据结构Set是ES6中新增的数据结构,用于存储不重复的值,允许存储任何类型的唯一值。Set的核心特点是值唯一性,类似数学中的集合。常用方法1.add(value)添加值到Set中,如果值已存在则不会添加。constset=newSet();set.add(1);//Set{1}2.delete(v......
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着电子商务的快速发展和消费者购物习惯的改变,线上购物已成为人们日常生活中不可或缺的一部分。零食作为日常生活中常见的消费品,其线上销售市场也呈现出快速增长的趋势。零食商城系统的设计与实现,旨在满足消费者对零食的多样化、个性化需求,提供......
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现二
    一、前言介绍:1.1项目摘要随着电子商务的快速发展和消费者购物习惯的改变,线上购物已成为人们日常生活中不可或缺的一部分。零食作为日常生活中常见的消费品,其线上销售市场也呈现出快速增长的趋势。零食商城系统的设计与实现,旨在满足消费者对零食的多样化、个性化需求,提供......
  • redis mysql nginx的docker-compose
    redismysqlnginx的docker-composeversion:'3'services:nginx:image:docker.m.daocloud.io/nginx:latestcontainer_name:nginxrestart:unless-stoppedenvironment:TZ:Asia/ShanghaiLANG:en_US.UTF-8volumes:#......
  • python爬虫数据存进mysql数据库
    一、安装mysql和mysqlworkbench我已经在电脑上安装了最新的mysql8.2.0,配置好环境变量,在命令提示符中以管理员的身份初始化并成功启动mysql数据库。前期因为以前的mysql没有卸载干净,导致mysql一直无法启动服务。所以一定要保证以前的mysql卸载干净才能重新安装,以前没有安装过......
  • MySQL - [20] 事务
    题记部分 一、什么是ACID(1)Atomicity原子性某个操作,要么全部执行完毕,要么全部回滚。(2)Consistency一致性数据库中的数据全都符合现实世界中的约束,则这些数据就符合一致性。比如性别的约束男or女,人民币勉之不能为负数,出生地址不能为null,参与转账的账户总余额不变;等等。(3......
  • actix-web连接mysql并返回json
    toml[dependencies]actix-web="4"mysql="25.0.0"chrono="0.4"serde={version="1.0",features=["derive"]}rsuseactix_web::{get,post,web,App,HttpServer,Responder,HttpResponse,Error};......
  • Unity Physics.Raycast发射一条射线并检测它与场景中物体的碰撞
    在Unity中,Physics.Raycast是一种非常常用的物理检测方法,用于发射一条射线并检测它与场景中物体的碰撞。这种方法在许多游戏场景中非常重要,例如用于射击、检测地面、触发事件等。1.基本概念射线(Ray):在三维空间中,射线是一个从某一点出发并沿着某个方向延伸的无穷长线。碰撞......