Elastisearch在kibana下常用命令總結
阿新 • • 發佈:2019-04-12
pre ren producer pan 現在 delete 包含 del 名稱
1、獲取所有數據
GET /_search
2、創建一個Document
PUT /ecommerce/product/1 { "name" : "gaolujie yagao", "desc" : "gaoxiao meibai", "price" : 30, "producer" : "gaolujie producer", "tags": [ "meibai", "fangzhu" ] } PUT /ecommerce/product/2 { "name" : "jiajieshi yagao","desc" : "youxiao fangzhu", "price" : 25, "producer" : "jiajieshi producer", "tags": [ "fangzhu" ] } PUT /ecommerce/product/3 { "name" : "zhonghua yagao", "desc" : "caoben zhiwu", "price" : 40, "producer" : "zhonghua producer", "tags": [ "qingxin"] }
3、檢索文檔查詢
GET /ecommerce/product/1
4、替換文檔(全量替換)
PUT /ecommerce/product/1 { "name" : "jiaqiangban gaolujie yagao", "desc" : "gaoxiao meibai", "price" : 30, "producer" : "gaolujie producer", "tags": [ "meibai", "fangzhu" ] }
5、更新文檔(_update)
POST /ecommerce/product/1/_update { "doc": { "price":70 } }
6、刪除文檔
DELETE /ecommerce/product/1
註意:在刪除一個Document之後,它不是立即物理刪除的,因為它的版本等信息還保留著
二、請求分類
1、query string search
類似這種 搜索全部商品:GET /ecommerce/product/_search(參數直接拼接在請求url上,不帶json參數的) query string search的由來,因為search參數都是以http請求的query string來附帶的 搜索商品名稱中包含yagao的商品,而且按照售價降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
適用於臨時的在命令行使用一些工具,比如curl,快速的發出請求,來檢索想要的信息;但是如果查詢請求很復雜,是很難去構建的,所以在生產環境中,幾乎很少使用query string search
2、query DSL
DSL:Domain Specified Language,特定領域的語言
http request body:請求體,可以用json的格式來構建查詢語法,比較方便,可以構建各種復雜的語法,比query string search肯定強大多了。
實例一:查詢所有的商品
GET ecommerce/product/_search
{
"query":
{
"match_all": {}
}
}
實例二:查詢名稱包含yaogao的產品,同時按照價格進行降序排序
GET ecommerce/product/_search
{
"query": {
"match": {
"name": "yaogao"
}
},
"sort": [
{
"price":"desc"
}
]
}
3、分頁查詢
總共3條商品,假設每頁就顯示1條商品,現在顯示第1頁,所以就查出來第1個商品
GET ecommerce/product/_search
{
"query": {
"match_all": {}
},
"from": 0,
"size": 1
}
4、查詢指定項
GET ecommerce/product/_search
{
"query": {
"match_all": {}
},
"_source": ["name","price"]
}
5、過濾查詢
搜索商品名稱包含yagao,而且售價大於25元的商品
GET ecommerce/product/_search { "query": { "bool": { "must": { "match" : { "name" : "yagao" } }, "filter": { "range": { "price": { "gte": 25 } } } } } }
6、full-text search(全文檢索)
全文檢索會將輸入的搜索串拆解開來,去倒排索引裏面去一一匹配,只要能匹配上任意一個拆解後的單詞,就可以作為結果返回
GET ecommerce/product/_search { "query": { "match": { "producer": "yagao producer" } } }
7、phrase search(短語搜索)
phrase search,要求輸入的搜索串,必須在指定的字段文本中,完全包含一模一樣的,才可以算匹配,才能作為結果返回
GET ecommerce/product/_search { "query": { "match_phrase": { "producer": "jiajieshi producer" } } }
8、多條件查詢
名字中有"yagao",描述上可以有fangzhu也可以沒有,價格不能是25元 must表示一定要滿足; should表示可以滿足也可以不滿足; must_not表示不能滿足該條件; "minimum_should_match": 1,表示最小匹配度,可以設置為百分百,詳情看源文檔Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,
設置了這個值的時候就必須滿足should裏面的設置了,另外註意這邊should裏面同一字段設置的多個值(意思是當這個值等於X或者等於Y的時候都成立,務必註意格式)
GET /ecommerce/_search { "query": { "bool": { "must": [ { "match": { "name": "yagao" } } ], "should": [ { "match": { "desc": "fangzhu" } }, { "match": { "desc": "caoben" } } ], "must_not": [ { "match": { "price": 25 } } ], "minimum_should_match": 1 } } }
Elastisearch在kibana下常用命令總結