首页 > 数据库 >倒排索引和ES相关概念对比MySQL

倒排索引和ES相关概念对比MySQL

时间:2024-10-15 20:21:04浏览次数:5  
标签:倒排 type 索引 文档 MySQL Elasticsearch 数据 ES

1.倒排索引

1.1倒排索引两个重要概念:

  • 文档:用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息以京东商城为列
    image

  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条,使我们搜索到的数据能够实现多内容搜索

1.2 倒排索引的搜索流程

image

2.ES相关概念对比MySQL

2.1数据存储模型

2.1.1 MySQL:

关系型数据库:
MySQL 是一种关系型数据库管理系统(RDBMS),数据存储在表中,表之间通过外键关联。

SQL 语言:使用 SQL(Structured Query Language)进行数据操作,包括 CRUD(Create, Read, Update, Delete)操作。

2.1.2 Elasticsearch:

NoSQL 数据库:Elasticsearch 是一种 NoSQL 数据库,主要用于全文搜索和分析。

JSON 文档:数据以 JSON 格式存储,每个文档可以包含嵌套对象和数组。

索引:类似于 MySQL 中的数据库,用于组织和管理文档。

2.2数据结构

2.2.1 MySQL:

表:数据存储在表中,表由行和列组成。

字段:每个表由多个字段组成,字段有固定的类型(如 int, varchar, date 等)。

主键:每个表有一个或多个主键,用于唯一标识每行数据。

外键:用于关联不同表之间的数据。

2.2.2 Elasticsearch:

索引:类似于 MySQL 中的数据库,用于组织和管理文档。

类型:在 Elasticsearch 6.x 及之前版本中,索引下可以有多个类型(type)。7.x 版本开始,每个索引只能有一个类型,默认为 _doc。

文档:数据以 JSON 格式存储,每个文档是一个独立的对象。

字段:每个文档由多个字段组成,字段可以是任何类型,包括嵌套对象和数组。

2.3数据操作

2.3.1 MySQL:

CRUD 操作:使用 SQL 语句进行增删改查操作

  -- 插入数据
  INSERT INTO users (id, name, email) VALUES (1, 'Alice', '[email protected]');

  -- 查询数据
  SELECT * FROM users WHERE id = 1;

  -- 更新数据
  UPDATE users SET name = 'Bob' WHERE id = 1;

  -- 删除数据
  DELETE FROM users WHERE id = 1;
  
2.3.2 Elasticsearch:

RESTful API:使用 HTTP 请求进行数据操作

  private static final String ITEM = "item";
  private static final String MAPPINGS = "{\n" +
            "  \"mappings\": {\n" +
            "    \"properties\": {\n" +
            "      \"id\": {\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"name\":{\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_max_word\"\n" +
            "      },\n" +
            "      \"price\":{\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"stock\":{\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"image\":{\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"category\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"brand\":{\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"sold\":{\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"commentCount\":{\n" +
            "        \"type\": \"integer\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"isAD\":{\n" +
            "        \"type\": \"boolean\"\n" +
            "      },\n" +
            "      \"updateTime\":{\n" +
            "        \"type\": \"date\"\n" +
            "      }\n" +
            "    }\n" +
            "  }\n" +
            "}";
    @Resource
    RestHighLevelClient restHighLevelClient;
    @Test
    public void testClient(){
        CreateIndexRequest createIndexRequest = new CreateIndexRequest(ITEM);
        createIndexRequest.source(MAPPINGS, XContentType.JSON);
        try {
            CreateIndexResponse response = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
            log.warn("{}",response.isAcknowledged());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
	

3. 总结

3.1 MySQL:
适合结构化数据存储和事务处理,支持复杂的关系型数据操作。
3.2 Elasticsearch:
适合大规模的全文搜索和实时数据分析,支持灵活的 JSON 文档存储。
根据具体的应用场景选择合适的技术方案,可以更好地满足业务需求。

标签:倒排,type,索引,文档,MySQL,Elasticsearch,数据,ES
From: https://www.cnblogs.com/SpringJerry/p/18468367

相关文章

  • 【JavaWeb】一文读懂Cookie、Session&Token 的区别和联系
    大佬精心打造:JavaWeb进阶学习资料》》点击免费获取【javaWeb】Cookie&Session&SpringSession原理分析简介Cookie、Session、Token这三者是不同发展阶段的产物,都是为了解决无状态的HTTP协议,提升网站的交互体验。但是他们各有优缺点,三者也没有明显的对立关系,反而常常......
  • C++使用MySQL官方的C API访问MySQL数据库
    这篇文章是一个简单的C++使用MySQL官方的CAPI访问MySQL数据库的代码示例。//main.h#ifndef_H_#define_H_#include<stdio.h>#include<Windows.h>#include<mysql.h>#pragmacomment(lib,"libmysql.lib")#defineinsert_prepare"insertintotest_tbvalue......
  • jumpserver堡垒机部署 添加资产主机和MySQL数据库,图解过程
    jumpserver堡垒机部署JumpServer是广受欢迎的开源堡垒机,是符合4A规范的专业运维安全审计系统。JumpServer帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。下载软件包JumpServer-开源堡垒机-官网#官方网址......
  • Elasticsearch相关概念对比MySQL
    MySQLElasticsearch说明TableIndex索引(index),就是文档的集合,类似数据库的表(table)RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)SchemaMappingMappi......
  • Elasticsearch相关概念对比MySQL
    Elasticsearch和MySQL是两种不同的数据管理系统,各自有其独特的概念和应用场景。以下是它们在几个关键概念上的对比:o数据模型Elasticsearch:。文档(Document):基本的数据单元,存储为JSON格式。。索引(Index):类似于数据库,包含多个文档。。类型(Type):在7.x版本后已被弃用,之前用于逻......
  • 【做题记录】Codeforces Round 943 (Div. 3)/CF1968A-F
    【做题记录】CodeforcesRound943(Div.3)/CF1968A-FA暴力枚举即可。B双指针枚举即可,能匹配就匹配。C考虑构造出\(a[1]=1,a[i]=a[i-1]+x[i]\)的数列,发现满足要求。D有个明显的结论,两人最终一定是在某个点上的。于是从起点开始扫一遍,求出到每一个点的距离和路上的分数......
  • 倒排索引
    倒排索引(InvertedIndex)是一种索引方法。在信息检索系统中非常常见,尤其是在全文搜索引擎中。主要思想:将文档中出现的每个词与包含该词的文档列表关联起来,从而实现快速检索。倒排索引的基本结构1、词汇表(Dictionary):包含所有文档集合中出现过的唯一词汇,以及指向每个词对应的......
  • .NET 中的 Web服务(Web Services)和WCF(Windows Communication Foundation)
    一、引言在当今数字化时代,不同的软件系统和应用程序之间需要进行高效、可靠的通信与数据交换。.NET框架中的Web服务和WCF(WindowsCommunicationFoundation)为此提供了强大的技术支持。它们在构建分布式应用程序、实现跨平台通信以及整合不同系统等方面发挥着至关重要的作......
  • python实现主动学习【一】modAL example active_regression
    文章目录一、简要介绍二、代码运行2.1前期准备2.1.1关于sklearn.gaussian_process.kernels的小展开1.RBFKernel(RadialBasisFunction)2.WhiteKernel3.组合内核的原理4.在主动学习中的优势5.其他核函数的特点6.如何组合使用不同的核2.1.2关于ActiveLearner......
  • mysql:赋予表格数据、用 cmd 运行 mysql 访问数据。
    前言:mysql:新建数据库与数据表,并用cmd运行mysql成功访问到了数据。-CSDN博客(一)创建表格数据打开MySQLWorkbench,跟据以下步骤操作。完成以上步骤,表格数据提交成功,现在打开cmd命令符运行mysql。(二)借助cmd运行mysql数据mysql-uroot-p(运行) showdatabase......