六、DSL操作ES 6.1、RESTful風格介紹 REST(Representational State Transfer 表述性狀態轉移),是一組架構約束條件和原則,滿足這些約束條件和原則的應用程式或設計就是RESTful。就是一種定義介面的規範。有以下特征: 基於HTTP 可以使用XML格式定 ...
六、DSL操作ES
6.1、RESTful風格介紹
- REST(Representational State Transfer 表述性狀態轉移),是一組架構約束條件和原則,滿足這些約束條件和原則的應用程式或設計就是RESTful。就是一種定義介面的規範。有以下特征:
- 基於HTTP
- 可以使用XML格式定義或JSON格式定義參數和返回值。
- 每一個URI代表1種資源。
- 客戶端使用GET、POST、PUT、DELETE 4個表示操作方式的動詞對服務端資源進行操作
- GET:用來獲取資源
- POST:用來新建資源(也可以用於更新資源)
- PUT:用來新建資源
- DELETE:用來刪除資源
- 假設現在有有一個
/user
資源- get:
/user/1
:查詢 - delete:
/user/1
:刪除 - post:
/user
:添加、修改 - put:
/user
:添加、修改
- get:
6.2、DSL操作ES-操作索引庫
相當於MySQL的資料庫
6.2.1、添加索引
- 命令
PUT goods_index
- 如下所示
6.2.2、查詢索引
- 命令
GET goods_index
- 如下所示
6.2.3、刪除索引
- 命令
delete goods_index
- 如下所示
6.2.4、關閉索引
PS:當索引處於關閉狀態,是不能添加文檔的
- 命令
POST goods_index/_close
- 如下所示
6.2.5、打開索引
- 命令
POST goods_index/_open
- 如下所示
6.3、DSL操作ES-操作映射
6.3.1、數據類型
瞭解ES中欄位有那些數據類型
- ES中包含兩類數據類型:簡單數據類型和複雜數據類型
1)簡單數據類型
-
字元串
-
類型 說明 text 可以分詞,不支持聚合(統計) keyword 不會分詞,將全部內容作為一個詞條,支持聚合(統計) -
例如:有個文檔(相當於表中的一條數據,其中一個欄位的值是華為手機
- text:華為、手機
- keyword:華為手機
-
-
數值(不一定分詞)
-
類型 說明 long 帶符號的64位數其最小值為-263263,最大值為263263 integer 帶符號的32為整數,其最小值為-231231,最大值為231231 short 帶符號的16位整數,其最小值為-32,768,最大值為32,767 byte 帶符號的8位整數,其最小值位-128,最大值為127 double 雙精度64位IEEE 754浮點數,限製為有限制 float 單精度32位IEEE 754浮點數,限製為有限制 half_float 半精度IEEE 754浮點數,限製為有限制 scale_float 由a支持的有限浮點數long,由固定double比例因數縮放 -
布爾類型
boolean
-
二進位
binary
-
日期
date
-
範圍類型
integer_range
float_range
long_range
double_range
date_range
-
2)複雜數據類型
- 數組
- 沒有專用的
array
數據類型,任何一個欄位的值,都可以被添加0個到多個,但是要求它們的類型必須一直,當類型一致,含有多個值存儲到ES中會自動轉化成數組類型
- 沒有專用的
- 對象
- 如下所示
3)GEO數據類型
- 地理位置坐標值
geo_point
6.3.2、操作映射
添加映射
-
命令
-
# 創建帶映射(表結構)的索引庫 PUT person { "mappings": { "properties": { "name":{ "type": "text" }, "age":{ "type": "integer" } } } }
-
-
如下所示
查詢映射
-
命令
-
GET person/_mapping
-
-
如下所示
添加欄位
-
命令
-
PUT person/_mapping { "properties":{ "sex":{ "type":"keyword" } } }
-
-
如下所示
-
再次查詢映射
-
PS:ES不能單獨修改映射欄位名稱或類型,也不能單獨刪除某個欄位,如果需要修改,直接刪除整個索引庫再重建
6.4、DSL操作ES-操作文檔
6.4.1、添加文檔
-
命令
-
# 指定id POST person/_doc/1 { "name":"張三", "age":18, "sex":"男" } # 不指定id POST person/_doc { "name":"翠花", "age":20, "sex":"女" }
-
-
如下所示
- 指定id
- 不指定id
- 指定id
6.4.2、查詢文檔
-
命令
-
GET person/_doc/1 # 查詢一個 GET person/_search # 查詢全部
-
-
如下所示
- 查詢一個
- 查詢所有
- 查詢一個
6.4.3、修改文檔
-
命令
-
PUT person/_doc/1 { "name":"如花", "age":20, "sex":"女" }
-
-
如下所示
-
記得之前說過的
- ES不能單獨修改映射欄位名稱或類型,也不能單獨刪除某個欄位,如果需要修改,直接刪除整個索引庫再重建
6.4.4、刪除文檔
-
命令
-
DELETE person/_doc/1
-
-
如下所示