1. match
match
:模糊匹配敛助,需要指定字段名晤揣,但是輸入會進行分詞,比如"hello world"會進行拆分為hello和world默勾,然后匹配碉渡,如果字段中包含hello或者world,或者都包含的結果都會被查詢出來滞诺,也就是說match是一個部分匹配的模糊查詢。查詢條件相對來說比較寬松习霹。
2. term
term
: 這種查詢和match在有些時候是等價的,比如我們查詢單個的詞hello炫隶,那么會和match查詢結果一樣淋叶,但是如果查詢"hello world",結果就相差很大伪阶,因為這個輸入不會進行分詞煞檩,就是說查詢的時候栅贴,是查詢字段分詞結果中是否有"hello world"的字樣斟湃,而不是查詢字段中包含"hello world"的字樣檐薯,elasticsearch會對字段內容進行分詞,"hello world"會被分成hello和world坛缕,不存在"hello world",因此這里的查詢結果會為空赚楚。這也是term查詢和match的區(qū)別。
3. match_phase
match_phase
:會對輸入做分詞宠页,但是需要結果中也包含所有的分詞搀军,而且順序要求一樣。以"hello world"為例罩句,要求結果中必須包含hello和world,而且還要求他們是連著的乳愉,順序也是固定的,hello that word不滿足蔓姚,world hello也不滿足條件。
4. query_string
query_string
:和match類似坡脐,但是match需要指定字段名,query_string是在所有字段中搜索备闲,范圍更廣泛。