ElasticSearch入門 - Kibana客戶端常用命令操作curd【RestApi模式】
先來了解什麼是ElasticSearch中的文件??
ES是面向文件(document oriented)的,這意味著它可以儲存整個物件或文件(document)。然而它不僅僅是儲存,還會索引(index)每個文件的內容使之可以被搜尋。在ES中,你可以對文件(而非成行成列的資料)進行索引、搜尋、排序、過濾。
ES使用Javascript物件符號(JavaScript Object Notation),也就是JSON,作為文件序列化格式。JSON現在已經被大多語言所支援,而且已經成為NoSQL領域的標準格式。
ES儲存的一個使用者文件的格式示例:
{ "id":1, "name":"zq", "birthday":"1997-01-01", "hobby":["音樂","運動"], "info":[ { "id":1, "name":"z" }, { "id":2, "name":"q" } ] }
在ES中將物件轉化為JSON並做索引要比在表結構中做相同的事情簡單的多~
CRUD:
溫馨小提示:全部命令集合放在文章最後了哦~ 下面是演示效果
1.新增 - ①指定文件id
PUT test/user/1
{
"id":1,
"name":"鄭清",
"age":18
}
②不指定id會預設生成一個【ES內建ID建立】AWgdjWwHtBOnz6xlJ0ha
POST test/user
{
"id":2,
"name":"鄭清2",
"age":20
}
2.獲取 - ①指定ID的文件
GET test/user/1
②獲取指定ID文件的部分欄位
GET test/user/1?_source=name
③只返回文件內容,不要元資料
GET test/user/1/_source
3.刪除
DELETE test/user/1
4.修改 - ①更新整個文件(即先刪除後再新增)
PUT test/user/1
{
"id":1,
"name":"鄭清"
}
注意:在響應中,我們可以看到Elasticsearch把 _version 增加了...
②區域性更新 - 覆蓋
POST test/user/1/_update
{
"doc":
{
"id":1,
"name":"名字被修改了..."
}
}
5.查詢 - ①查詢1個
GET test/user/1
②查詢所有
GET test/user/_search
GET _search --> 沒有指定任何的查詢條件,只返回叢集索引中的所有文件
③批量查詢
GET test/user/_mget
{
"ids":["1","3"]
}
④高階查詢 - 查詢age為10~18的文件
GET test/user/_search?q=age:[10 TO 18]
⑤高階查詢+排序【asc:升序 desc:降序】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc
⑥高階查詢+排序+分頁 【from:從第幾頁開始 size:每頁資料條數】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc&from=0&size=1
⑦高階查詢+排序+分頁+擷取欄位 【_source:擷取name和age欄位】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc&from=0&size=2&_source=name,age
相當於sql: select name,age from t_user where name like %zq% orderby id desc limit 0,10
最後附上全部命令:
# 新增 - ①指定文件id
PUT test/user/1
{
"id":1,
"name":"鄭清",
"age":18
}
# 新增 - ②不指定id會預設生成一個【ES內建ID建立】AWgdjWwHtBOnz6xlJ0ha
POST test/user
{
"id":2,
"name":"鄭清2",
"age":20
}
# 獲取 - ①指定ID的文件
GET test/user/1
# 獲取 - ②指定ID文件的部分欄位
GET test/user/1?_source=name
# 獲取 - ③只返回文件內容,不要元資料
GET test/user/1/_source
# 刪除 - 指定文件【ID 或 ES內建建立的ID->AWgdjWwHtBOnz6xlJ0ha】
DELETE test/user/1
# 修改 - ①更新整個文件(即先刪除再新增)
PUT test/user/1
{
"id":1,
"name":"鄭清"
}
# 修改 - ②區域性更新->覆蓋
POST test/user/1/_update
{
"doc":
{
"id":1,
"name":"名字被修改了..."
}
}
查詢字串:
# ①查詢1個
GET test/user/1
# ②查詢所有
GET test/user/_search
# 沒有指定任何的查詢條件,只返回叢集索引中的所有文件
GET _search
# ③批量查詢
GET test/user/_mget
{
"ids":["1","3"]
}
# ④高階查詢 - 查詢age為10~18的文件
GET test/user/_search?q=age:[10 TO 18]
# ⑤高階查詢+排序【asc:升序 desc:降序】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc
# ⑥高階查詢+排序+分頁 【from:從第幾頁開始 size:每頁資料條數】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc&from=0&size=1
# ⑦高階查詢+排序+分頁+擷取欄位 【_source:擷取name和age欄位】
GET test/user/_search?q=age:[10 TO 20]&sort=age:asc&from=0&size=2&_source=name,age
【相當於sql: select name,age from t_user where name like %zq% orderby id desc limit 0,10 】