Elasticsearch 搜尋使用詳解

2021-07-26 19:34:34 字數 2375 閱讀 3913

結構化搜尋

//精確值查詢

使用過濾器(filters),跳過評分階段,容易快取。請盡可能使用過濾式查詢。

在query dsl查詢表示式中,term查詢類似where條件查詢。

}使用 constant_score(恆定分數) 查詢以非評分模式來執行 term 查詢並以一作為統一評分。

get /my_store/products/_search}}

}}注意:過濾器會建立乙個 bitset (乙個包含 0 和 1 的陣列),它描述了哪個文件會包含該 term 。匹配文件的標誌位是 1 。

//組合過濾器

當我們需要多個過濾器時,只須將它們置入 bool 過濾器的不同部分即可。可以巢狀。

乙個 bool 過濾器由三部分組成:

}must

所有的語句都 必須(must) 匹配,與 and 等價。

must_not

所有的語句都 不能(must not) 匹配,與 not 等價。

should

至少有乙個語句要匹配,與 or 等價。

get /my_store/products/_search

}, }

],"must_not" : }}

}}}}

//查詢多個值,從term到terms

}term 查詢是如何工作的? elasticsearch 會在倒排索引中查詢包括某 term 的所有文件,然後構造乙個 bitset 。

token

//範圍查詢

range 查詢可同時提供包含(inclusive)和不包含(exclusive)這兩種範圍表示式,

gt: > 大於(greater than)

lt: < 小於(less than)

gte: >= 大於或等於(greater than or equal to)

lte: <= 小於或等於(less than or equal to)

"range" :

}//處理 null 值

//exists 查詢

get /my_index/posts/_search}}

}//missing 查詢本質上與 exists 恰好相反: 它返回某個特定 _無_ 值字段的文件

get /my_index/posts/_search}}

}}}全文搜尋

//match查詢

get /my_index/my_type/_search}}

控制精度

get /my_index/my_type/_search}}

}//bool組合查詢

bool 查詢會為每個文件計算相關度評分 _score

get /my_index/my_type/_search

},"must_not": },

"should": [},}

]}}控制精度

get /my_index/my_type/_search

},},}],

"minimum_should_match": 2 }}

}加權重查詢

get /_search}},

"should": [

}},}}]}

}}//分析查詢_analyze和explain

get /my_index/_analyze

get /my_index/my_type/_validate/query?explain},}

]}}}

//dis_max 即分離 最大化查詢(disjunction max query) 。分離(disjunction)的意思是 或(or) ,這與可以把結合(conjunction)理解成 與(and) 相對應。},}

]}}}

//最佳字段查詢調優

指定 tie_breaker,將其他匹配語句的評分結果與 tie_breaker 相乘。結果自然會匹配精度降低。},}

],"tie_breaker": 0.3}}

//multi_match查詢

}//短語匹配match_phrase

get /my_index/my_type/_search}}

//置頂"window_size": 50,和鄰近度匹配 "slop":  50

get /my_index/my_type/_search}},

"rescore": }}

}}}}

}}//prefix字首查詢

get /my_index/address/_search}}

//萬用字元查詢wildcard

get /my_index/address/_search

}regexp 正則式查詢

get /my_index/address/_search}}

}

Elasticsearch 條件搜尋

es提供了兩種搜尋的方式 請求引數方式和請求體方式。請求引數方式 curl localhost 9200 bank search?q pretty 其中bank是查詢的索引名稱,q後面跟著搜尋的條件 q 表示查詢所有的內容 請求體方式 推薦這種方式 curl xpost localhost 9200...

Elasticsearch 深入搜尋

結構化搜尋 structured search 是指有關探詢那些具有內在結構資料的過程 在結構化查詢中,我們得到的結果 總是非是即否,要麼存於集合之中,要麼存在集合之外。結構化查詢不關心檔案的相關度或評分 它簡單的對文件包括或排除處理。當進行精確值查詢時,我們會使用過濾器 filters term ...

elasticsearch 搜尋方式

宣告 本文僅僅只是記個筆記 搜尋方式 took 耗費了幾毫秒 timed out 是否超時,這裡沒有 shareds 資料拆成1哥分片,所以對於搜尋請求,會打造所有的primary shard 或者是它的某個replica shard也可以 hits.total 查詢結果的數量,這裡有 3 個 do...