ElasticSearch學(xué)習(xí)筆記(二)

Search API

在es中進(jìn)行搜索有兩種方式筑煮,第一種是uri中使用查詢參數(shù)芜壁,第二種是Request Body Search冕广,使用第二種方式可以實(shí)現(xiàn)各種高級搜索

1.uri search

“GET 索引名(可以加通配符)/_search”:參數(shù)“q”速客,指定查詢字符串,使用Query String Syntax欲账。參數(shù)“df”屡江,指定查詢的字段。

Query String Syntax有這幾種情況

指定字段/泛查詢(查詢所有的字段赛不,除非指定df):q=user:mike/q=mike

Term查詢/Phrase查詢:q=(a b)即包含a或是b的都會計(jì)入結(jié)果/q=“a b”即必須同時(shí)包含a b且順序一致

布爾操作(必須大寫):上面的q=(a b)可以等價(jià)為q=(a OR b)

+/- :即增加must或must not的條件 如q=(a +b)即理解為should a must b

接下來主要介紹Request Body Search

2.基于詞項(xiàng)查詢和基于全文查詢

a.term查詢屬于是基于詞項(xiàng)的查詢惩嘉,es不會對查詢條件做分詞處理,比如下面的查詢就無法查出fullname有Eddie的數(shù)據(jù)俄删,而將條件改為“eddie”后就可以查到結(jié)果了


查詢條件改為eddie后返回?cái)?shù)據(jù)

原因是因?yàn)槟J(rèn)的分詞器在索引時(shí)會將大寫轉(zhuǎn)換為小寫宏怔,所以term查詢不會將查詢條件進(jìn)行分詞處理奏路,就沒辦法在es中索引到數(shù)據(jù)畴椰。

一般可以使用t對字段的keyword進(jìn)行term查詢來進(jìn)行字段的精確匹配

b.而match,match phrase鸽粉,query string都屬于全文查詢斜脂,會對搜索條件進(jìn)行分詞處理

如這個(gè)查詢條件就可以查詢出上面那條數(shù)據(jù)

而match和match phrase的區(qū)別在于,match phrase會將用于查詢的字符串作為一個(gè)短語触机,即搜索結(jié)果中必須同時(shí)有match phrase條件中出現(xiàn)的所有詞匯且順序也一樣且不能在中間插入多余的字符(可以設(shè)置slop參數(shù)以放寬條件)

3.query context & filter context? bool查詢

區(qū)別在于query context會進(jìn)行相關(guān)性算分而filter context不會帚戳,所以filter context的性能更好且可以使用緩存,

bool查詢即must儡首,should片任,must not,filter四種查詢條件蔬胯,通過bool查詢可以將多種查詢條件組合在一起对供,每個(gè)查詢字句的評分會合并到總的相關(guān)性評分中,但后面兩種就屬于filter context不會影響算分。

bool同一層級的查詢條件權(quán)重一樣产场,而查詢可以進(jìn)行嵌套鹅髓,而嵌套內(nèi)的查詢算分權(quán)重會比外層查詢條件低

4.Dis max query與單字符串多字段搜索

都知道在ES中進(jìn)行搜索是會根據(jù)結(jié)果和搜索條件的匹配程度進(jìn)行相關(guān)性算分并根據(jù)算分進(jìn)行排序的,這樣可以盡量將相關(guān)度更高的結(jié)果排列在前面京景,但在單字符串多字段搜索的時(shí)候默認(rèn)的相關(guān)性算分得出的結(jié)果不一定是我們想要的那樣窿冯。比如現(xiàn)在有兩個(gè)文檔

第一個(gè)文檔:{“title”:“a fool boy”, "content”:“he seems laike very fool”}

第二個(gè)文檔:{“title”:“do not be a fool man”, “content”:“this should be a reality”}

如果使用bool查詢對title和content同時(shí)進(jìn)行"fool man"的should match查詢即

{

? ? “query”:{

? ? ? ? "bool"{

? ? ? ? ? ? "should":[

? ? ? ? ? ? ? ? {"match":{"content":"fool man"}},

? ? ? ? ? ? ? ? {"match":{"titile":"fool man"}}

? ? ? ? ? ? ]

????????}

????}

}

按常理來說很明顯第二個(gè)文檔與我們預(yù)期的搜索結(jié)果更匹配,但實(shí)際結(jié)果可能卻是將第一個(gè)文檔排在最前面确徙,因?yàn)樵谟?jì)算相關(guān)性算分時(shí)醒串,should中的兩個(gè)條件對相關(guān)性算分貢獻(xiàn)的權(quán)重是一致的,而第一個(gè)文檔兩個(gè)字段都出現(xiàn)了fool鄙皇,第二個(gè)文檔只有title字段出現(xiàn)了fool man厦凤。所以經(jīng)過相加后第一個(gè)文檔的相關(guān)性算分更高了。這個(gè)時(shí)候?yàn)榱说玫礁项A(yù)期的結(jié)果育苟,我們可以使用Disjunction max query较鼓,

{

? ? “query”:{

? ? ? ? "dis_max"{

? ? ? ? ? ? "querys":[

????????????????{"match":{"content":"fool man"}},

????????????????{"match":{"titile":"fool man"}}

????????????]

????????}

????}

}

這個(gè)查詢的作用就是將單字符串多字段查詢的時(shí)候不會將每個(gè)字段的相關(guān)性算分進(jìn)行簡單相加,而是取算分最高的子段的分作為結(jié)果违柏,這樣就可以查出更符合我們預(yù)期的結(jié)果博烂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市漱竖,隨后出現(xiàn)的幾起案子禽篱,更是在濱河造成了極大的恐慌,老刑警劉巖馍惹,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躺率,死亡現(xiàn)場離奇詭異,居然都是意外死亡万矾,警方通過查閱死者的電腦和手機(jī)悼吱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來良狈,“玉大人后添,你說我怎么就攤上這事⌒蕉。” “怎么了遇西?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長严嗜。 經(jīng)常有香客問我粱檀,道長,這世上最難降的妖魔是什么漫玄? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任茄蚯,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘第队。我一直安慰自己哮塞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布凳谦。 她就那樣靜靜地躺著忆畅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尸执。 梳的紋絲不亂的頭發(fā)上家凯,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機(jī)與錄音如失,去河邊找鬼绊诲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褪贵,可吹牛的內(nèi)容都是我干的掂之。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼脆丁,長吁一口氣:“原來是場噩夢啊……” “哼世舰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起槽卫,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤跟压,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后歼培,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體震蒋,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年躲庄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了查剖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡读跷,死狀恐怖梗搅,靈堂內(nèi)的尸體忽然破棺而出禾唁,到底是詐尸還是另有隱情效览,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布荡短,位于F島的核電站丐枉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掘托。R本人自食惡果不足惜瘦锹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弯院,春花似錦辱士、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椅挣,卻和暖如春头岔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鼠证。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工峡竣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人量九。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓适掰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荠列。 傳聞我的和親對象是個(gè)殘疾皇子攻谁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348