1、query string search
GET /user_index/user_type/_search
took:耗費了幾毫秒
timed_out:是否超時,這裏是沒有
_shards:數據拆成了幾個分片,所以對於搜索請求,會打到所有的primary shard(或者是它的某個replica shard也可以)
hits.total:查詢結果的數量,3個document
hits.max_score:score的含義,就是document對於一個search的相關度的匹配分數,越相關,就越匹配,分數也高
hits.hits:包含了匹配搜索的document的詳細數據
GET /user_index/user_type/_search?q=name:baba&sort=age:desc
2、query DSL查詢
DSL:Domain Specified Language,特定領域的語言
http request body:請求體,可以用json的格式來構建查詢語法,比較方便,可以構建各種複雜的語法,比query string search強大方便。
GET /user_index/user_type/_search
{
"query": { "match_all": {} }
}
1)查詢名稱包含baba的信息,同時按照價格降序排序
GET /user_index/user_type/_search
{"query": { "match": { "name":"baba"}},"sort":[{"age":"desc"}]}
2)分頁查詢信息,每頁顯示2條,查詢第二頁,並按年齡倒敘排序。
form:分頁起始位置,從0開始,
size:頁面大小。
GET /user_index/user_type/_search
{
"query": { "match": {
"name":"baba"
}
}, "from": 0,
"size": 2,
"sort":[{
"age":"desc"
}]
}
3)只要查詢出來用戶的名稱和年齡
_source:["filed1","filed2"]:[]是要查的參數。
GET /ear_index/ear_type/_search
{
"query": {
"match": {
"name":"baba"
}},
"_source": ["name","age"],
"from": 0,
"size": 2,
"sort":[{
"age":"desc"
}]
}
3、query filter 過濾查詢
4)根據名稱查詢年齡大於10小於20的用戶信息
GET /user_index/user_type/_search
{
"query":{
"bool": {
"must":{
"match":{
"name":"baba"
}
},"filter": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
4、full-text search(全文檢索)會分解成一個個單字或單詞,然後通過倒排索引,一個個匹配你要搜索的信息。
GET /user_index/user_type/_search
{
"query":{
"match": {
"desc": "12323"
}
}
}
5、phrase search(短語搜索)
跟全文檢索相對應,相反,全文檢索會將輸入的搜索串拆解開來,去倒排索引裏面去一一匹配,只要能匹配上任意一個拆解後的單詞,就可以作爲結果返回
phrase search,要求輸入的搜索串,必須在指定的字段文本中,完全包含一模一樣的,纔可以算匹配,才能作爲結果返回
GET /user_index/user_type/_search
{
"query":{
"match_phrase": {
"desc": "12323"
}
}
}
6、highlight search(高亮搜索結果)highlight :高亮顯示字段
GET /user_index/user_type/_search
{"query":{"match": {"desc": "12323"}},
"highlight": {"fields" : {"desc" :{} }}}