聊一聊Elasticsearch和MySQL的常用操作
前言
ElasticSearch,開源的搜索和數(shù)據(jù)分析引擎,也是名列前茅的 nosql。
很多時候會想拿它和關(guān)系型數(shù)據(jù)庫做對比,嚴格上它們是沒有太多可比性的。
不過把有的東西放在一起比較,會幫助我們快速去理解一些 ElasticSearch 的內(nèi)容。
老黃這邊抽空梳理了一些常用的 sql 語句 “對應” ElasticSearch 的操作,主要是針對 CURD 的。
示例用的是 mysql 和 ElasticSearch 7.12.0 。
表操作
為了簡單起見,弄一個簡單的訂單表 order-2021 來演示。
刪除表
創(chuàng)建表
NOTE:
mysql 的索引需要一個一個的加,ES 這邊不需要。
mysql 有自增 Id, ES 這邊也會有自動生成 Id 的操作,同樣的,兩邊也可以自定義 Id。
keyword 和 text 按需調(diào)整。
改表名
NOTE: ES 的是起一個別名,然后兩個名字都可以用。
插入數(shù)據(jù)
單條插入
批量插入
NOTE:
ES 的批量操作需要注意,每一行最后要有換行符 \n 結(jié)尾
Content-Type 指定為 application/x-ndjson
更新數(shù)據(jù)
根據(jù)ID更新
根據(jù)查詢條件更新
NOTE: ES 的條件更新分為兩部分,一個是 query ,也就是 where 部分, 一個是 script ,也就是 set 部分。
刪除數(shù)據(jù)
根據(jù)Id刪除
根據(jù)查詢條件刪除
查詢數(shù)據(jù)
查詢?nèi)?/h3>條件查詢
NOTE:
ES 的條件查詢是有非常多的, 這里只列舉了部分。
ES 的查詢,在默認情況下會有打分的操作,是會損耗性能的,而常規(guī)的 sql 查詢時不需要這些,所以用 bool + filter 來忽略。
查詢指定字段
NOTE: 查詢的時候,如果只要幾個字段,那么可以通過 _source 來指定。
查詢數(shù)量
NOTE: 根據(jù)指定條件獲取數(shù)量,建議用 _count 來查詢,_search 查詢的結(jié)果里面的條數(shù)不一定準確。
淺分頁
NOTE: 淺分頁,頁碼不宜過深,適合滾動加載的場景,深度分頁可以考慮 SearchAfter
Group By
NOTE: group by 屬于聚合操作的一種,要用 aggs ,聚合,不用原數(shù)據(jù),所以 size 設為 0。
Avg/Min/Max/Sum
寫在最后
Elasticsearch 這一塊常用的 CURD 操作,和常用的關(guān)系型數(shù)據(jù)庫對照一遍,其實很容易上手。
要用到一些 Elasticsearch 特有的功能時,去查詢官方文檔也基本可以搞定。
總結(jié)
以上是默认站点為你收集整理的聊一聊Elasticsearch和MySQL的常用操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【招聘(北京)】今天誉讯(北京)有限公司
- 下一篇: Mysql+Navicat for My