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