本篇會以小案例需求的方式帶你學習Elasticsearch中基於RESTFulApi操做。手敲幾遍,想不會也難。加油~mysql
對了,這裏使用的是Kibana和head進行的管理,若是沒有接觸,推薦看下面的博客,寫的挺清楚。sql
Elasticsearch也是基於Lucene的全文檢索庫,本質也是存儲數據,不少概念與MySQL相似的。數據庫
概念 | 說明 |
---|---|
索引(indices) | Databases數據庫 |
類型(type) | Table數據庫 |
文檔(Document) | Row行 |
字段(Field) | Columns |
Elastic中索引至關於sql數據庫中的數據庫 實例: PUT 索引名 {}
GET 索引名
DELETE 索引名
刪除完成後記得再建立回來,由於還要使用編程
類型至關於sql數據庫中的表api
PUT 索引名/_mapping/類型 { "properties": { "字段":{ "參數名": "參數值" } } } 解釋: 參數名: type,表示的是概參數的類型 參數值: 核心類型: 字符串: text(可分詞)、keyword(不可分詞) 整數:integer,long,short,byte 浮點:double,float,half_float,scaled_float 日期:date 邏輯:boolean 複合類型: 數組:array 對象:object 嵌套:nested 地理類型: 地理座標:geo_point 地理地圖:geo_shape 特殊類型: IP:ip 範圍:completion 令牌計數:token_count 附件:attachment 抽取:percolator 關於參數類型的解釋,這個博客感受寫的不錯,分享給大家:https://www.jianshu.com/p/01f489c46c38
#建立映射 PUT refapi/_mapping/book { "properties": { "title":{ "type": "text", "analyzer": "ik_max_word" }, "price":{ "type": "" }, "images":{ "type": "keyword", "index": true } } }
GET 索引號/_mapping
GET refapi/_mapping
POST 索引名/類型名 { "屬性":"值", "屬性2":"值2" }
#添加數據,無id POST refapi/book { "title":"女神養成計劃II", "price":"128.5", "images":"1.png" } POST refapi/book { "title":"Java核心技術", "price":"128.5", "images":"1.png" } POST refapi/book { "title":"Java編程思想", "price":"128.5", "images":"1.png" } POST refapi/book { "title":"PHP編程思想", "price":"128.5", "images":"1.png" }
PUT 索引名/類型/id { "屬性":"值", "屬性2:"值2 }
#添加或更新數據:有id PUT refapi/book/b001 { "title":"女神養成計劃III", "price":"138.5", "images":"3.png" } PUT refapi/book/b002 { "title":"壞蛋是怎麼煉成的", "price":"66.66", "images":"4.png" }
DELETE 索引名/類型/id
DELETE refapi/book/b002
GET 索引/類型/id 相似於sql中的(select * from book where id = ?)
GET refapi/book/b001
GET 索引/類型/id?_source=字段,字段2 相似於sql中的(select title,price from book where id = ?)
GET refapi/book/b001?_source=title,price
#查詢全部索引庫 GET _search { "query": { "match_all": {} } }
#查詢指定索引庫 GET 索引庫/_search { "query": { "match_all": {} } }
#查詢指定索引庫 GET refapi/_search { "query": { "match_all": {} } }
#查詢指定索引庫 中部分列數據 GET 索引庫/_search { "query": { "match_all": {} }, "_source": ["字段1","字段2",....] }
#查詢指定索引庫 中部分列數據 GET refapi/_search { "query": { "match_all": {} }, "_source": ["title","price"] }
GET 索引庫/_search { "query": { "match": { "字段": "值" } } }
GET refapi/_search { "query": { "match": { "title": "Java編程思想" } } }
至關因而and(交集)數組
#採用多條件進行查詢,查詢title爲 「Java編程思想」 GET 索引庫/_search { "query": { "bool": { "must": [ { 關鍵字查詢 } ] } } }
#採用多條件進行查詢,查詢title爲 「Java編程思想」 GET refapi/_search { "query": { "bool": { "must": [ { "match": { "title": "Java編程思想" } } ] } } }
#採用多條件進行查詢,查詢title爲"Java編程思想"的,不含"PHP"的 GET refapi/_search { "query": { "bool": { "must": [ { "match": { "title": "Java編程思想" } } ], "must_not": [ { "match": { "title": "PHP" } } ] } } }
至關因而or(並集)app
#複合查詢-should # 查詢"PHP編程思想" ,以及"女神養成記"相關數據 GET 索引庫/_search { "query": { "bool": { "should": [ { 關鍵字查詢 }, { 關鍵字查詢 }, ...... ] } } }
#複合查詢-should # 查詢"PHP編程思想" ,以及"女神養成記"相關數據 GET refapi/_search { "query": { "bool": { "should": [ { "match": { "title": "PHP編程思想" } }, { "match": { "title": "女神養成記" } } ] } } }
#查詢價格爲138.5 的信息 GET 索引庫/_search { "query": { "term": { "字段": { "value": "值" } } } }
#查詢價格爲138.5 的信息 GET refapi/_search { "query": { "term": { "price": { "value": "138.5" } } } }
#範圍查詢-range GET 索引庫/_search { "query": { "range": { "字段": { "gte": "大於等於", "lte": "小於等於", "gt": "大於", "lt": "小於" } } } }
#範圍查詢-range #查詢價格在10 - 100 之間的數據 GET refapi/_search { "query": { "range": { "price": { "gte": 130, "lte": 140 } } } }
GET 索引庫/_search { "query": { "match_all": {} }, "sort": [ { "字段": { "order": "排序方式(desc/asc)" } } ] }
#按照價格排序 GET refapi/_search { "query": { "match_all": {} }, "sort": [ { "price": { "order": "desc" } } ] }
GET 索引庫/_search { "query": { "match_all": {} }, "from": 0, "size": 2 }
#分頁-from+size GET refapi/_search { "query": { "match_all": {} }, "from": 0, "size": 2 }
建立:PUT 索引庫 查詢:GET 索引庫 刪除:DELETE 索引庫
建立映射:PUT 索引庫/_mapping/類型 查看映射:GET 索引庫/類型
添加: 無id, 有id只須要在類型後面跟/id便可 POST 索引庫/類型 { "屬性":"值" } 刪除: 無id, 有id只須要在類型後面跟/id便可 DELETE 索引庫/類型
- 經過id查詢: GET 索引庫/類型/id GET 索引庫/類型/id?_source=字段1,字段2
- 查詢全部: GET 索引庫/_search { "query":{ "match_all":{} } }
- 關鍵字查詢: match GET 索引庫/_search { "query":{ "match":{ "字段":"值" } } }
- 複合查詢: must(交集and)、should(並集or) 使用bool進行多條件拼湊 採用 must、must_not進行數據過濾 must:須要留下來的數據 must_not:不須要留下的數據
- 精準查詢: term GET czxy/_search { "query": { "term": { "字段": { "value": "值" } } } }
- 範圍查詢: range GET 索引庫/_search { "query": { "range": { "字段": { gt : "大於", lt : "小於", gte : "大於或等於", lte : "小於或等於" } } } }
- 排序: sort GET 索引庫/_search { "query": { "match_all": {} }, "sort": [ { "字段": { "order": "排序方式(desc:降序/asc:升序)" } } ] }
- 分頁: from+size from: 從第幾個索引開始(從0開始) size:從from索引向後數幾(size)個進行查詢 GET refapi/_search { "query": { "match_all": {} }, "from": 0, "size": 2 }