欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

聊一聊Elasticsearch和MySQL的常用操作

发布时间:2023/12/4 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 聊一聊Elasticsearch和MySQL的常用操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

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

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

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

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

示例用的是 mysql 和 ElasticSearch 7.12.0 。

表操作

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

删除表

创建表

NOTE:

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

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

  • keyword 和 text 按需调整。

  • 改表名

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

    插入数据

    单条插入

    批量插入

    NOTE:

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

  • Content-Type 指定为 application/x-ndjson

  • 更新数据

    根据ID更新

    根据查询条件更新

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

    删除数据

    根据Id删除

    根据查询条件删除

    查询数据

    查询全部

    条件查询

    NOTE:

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

  • 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的常用操作的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。