聊一聊Elasticsearch和MySQL的常用操作

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊一聊Elasticsearch和MySQL的常用操作相关的知识,希望对你有一定的参考价值。

前言

ElasticSearch,开源的搜索和数据分析引擎,也是名列前茅的 nosql。

很多时候会想拿它和关系型数据库做对比,严格上它们是没有太多可比性的。

不过把有的东西放在一起比较,会帮助我们快速去理解一些 ElasticSearch 的内容。

老黄这边抽空梳理了一些常用的 sql 语句 “对应” ElasticSearch 的操作,主要是针对 CURD 的。

示例用的是 mysql 和 ElasticSearch 7.12.0 。

表操作

为了简单起见,弄一个简单的订单表 order-2021 来演示。

删除表

创建表

NOTE:

  1. mysql 的索引需要一个一个的加,ES 这边不需要。

  2. mysql 有自增 Id, ES 这边也会有自动生成 Id 的操作,同样的,两边也可以自定义 Id。

  3. keyword 和 text 按需调整。

改表名

NOTE: ES 的是起一个别名,然后两个名字都可以用。

插入数据

单条插入

批量插入

NOTE:

  1. ES 的批量操作需要注意,每一行最后要有换行符 \\n 结尾

  2. Content-Type 指定为 application/x-ndjson

更新数据

根据ID更新

根据查询条件更新

NOTE: ES 的条件更新分为两部分,一个是 query ,也就是 where 部分, 一个是 script ,也就是 set 部分。

删除数据

根据Id删除

根据查询条件删除

查询数据

查询全部

条件查询

NOTE:

  1. ES 的条件查询是有非常多的, 这里只列举了部分。

  2. ES 的查询,在默认情况下会有打分的操作,是会损耗性能的,而常规的 sql 查询时不需要这些,所以用 bool + filter 来忽略。

查询指定字段

NOTE: 查询的时候,如果只要几个字段,那么可以通过 _source 来指定。

查询数量

NOTE: 根据指定条件获取数量,建议用 _count 来查询,_search 查询的结果里面的条数不一定准确。

浅分页

NOTE: 浅分页,页码不宜过深,适合滚动加载的场景,深度分页可以考虑 SearchAfter

Group By

NOTE: group by 属于聚合操作的一种,要用 aggs ,聚合,不用原数据,所以 size 设为 0。

Avg/Min/Max/Sum

写在最后

Elasticsearch 这一块常用的 CURD 操作,和常用的关系型数据库对照一遍,其实很容易上手。

要用到一些 Elasticsearch 特有的功能时,去查询官方文档也基本可以搞定。

以上是关于聊一聊Elasticsearch和MySQL的常用操作的主要内容,如果未能解决你的问题,请参考以下文章

聊一聊Elasticsearch的健康状态

来聊一聊 ElasticSearch 最新版的 Java 客户端

来聊一聊 ElasticSearch 最新版的 Java 客户端

来聊一聊 ElasticSearch 最新版的 Java 客户端

聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交

聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交