elasticsearch多種搜索方式--語法初窺json
elasticsearch六種搜索方式:elasticsearch
一、query string search
二、query DSL
三、query filter
四、full-text search
五、phrase search
六、highlight searchspa
一、query string search排序
(1)搜索所有用戶:索引
GET /index/type/_searchci
以下圖,所得信息:string
參數解釋: it
took:耗費了幾毫秒ast
_shards:數據拆成了5個分片,因此對於搜索請求,會打到全部的primary shard(或者是它的某個replica shard也能夠)搜索
hits.total:查詢結果的數量,N個document
hits.max_score:score的含義,就是document對於一個search的相關度的匹配分數,越相關,就越匹配,分數也高
hits.hits:包含了匹配搜索的document的詳細數據
(2)搜索用戶名中包含「帥」的商品,並且按照年齡降序排序:
GET /index/type/_search?q=name:帥&sort=age:desc
二、query DSL
DSL:Domain Specified Language,特定領域的語言
http request body:請求體,能夠用json的格式來構建查詢語法,比較方便,能夠構建各類複雜的語法
(1)查詢全部的用戶
GET /index/type/_search
{
"query": { "match_all": {} }
}
(2)查詢名稱包含shuai的用戶,同時按照年齡降序排序
GET /index/type/_search
{
"query" : {
"match" : {
"name" : "shuai"
}
},
"sort": [
{ "age": "desc" }
]
}
(3)分頁查詢用戶,假設每頁就顯示1條記錄,如今顯示第2頁
GET /index/type/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
(4)指定要查詢出來用戶的名稱和年齡就能夠
GET /index/type/_search
{
"query": { "match_all": {} },
"_source": ["name", "age"]
}
(5),分頁查詢商品,總共3條商品,假設每頁就顯示1條商品,如今顯示第2頁,因此就查出來第2個商品
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
(6),指定要查詢出來商品的名稱和價格就能夠
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
三、query filter
搜索商品名稱包含yagao,並且售價大於25元的商品
GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 25 }
}
}
}
}
}
---------------------------------------------------------------------------------------------------------------------------------
四、full-text search(全文檢索)
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao producer"
}
}
}
五、phrase search(短語搜索)
跟全文檢索相對應,相反,全文檢索會將輸入的搜索串拆解開來,去倒排索引裏面去一一匹配,只要能匹配上任意一個拆解後的單詞,就能夠做爲結果返回
phrase search,要求輸入的搜索串,必須在指定的字段文本中,徹底包含如出一轍的,才能夠算匹配,才能做爲結果返回
GET /ecommerce/product/_search
{
"query" : {
"match_phrase" : {
"producer" : "yagao producer"
}
}
}
六、highlight search(高亮搜索結果)
GET /ecommerce/product/_search { "query" : { "match" : { "producer" : "producer" } }, "highlight": { "fields" : { "producer" : {} } } }