第11篇-Elasticsearch查詢方法

我的Elasticsearch系列文章,逐漸更新中管挟,歡迎關(guān)注

0A.關(guān)于Elasticsearch及實(shí)例應(yīng)用

00.Solr與ElasticSearch對比

01.ElasticSearch能做什么非剃?

02.Elastic Stack功能介紹

03.如何安裝與設(shè)置Elasticsearch API

04.如果通過elasticsearch的head插件建立索引_CRUD操作

05.Elasticsearch多個(gè)實(shí)例和head plugin使用介紹

06.當(dāng)Elasticsearch進(jìn)行文檔索引時(shí)慨亲,它是怎樣工作的绿鸣?

07.Elasticsearch中的映射方式—簡潔版教程

08.Elasticsearch中的分析和分析器應(yīng)用方式

09.Elasticsearch中構(gòu)建自定義分析器

10.Kibana科普-作為Elasticsearhc開發(fā)工具

11.Elasticsearch查詢方法

另外Elasticsearch入門晋渺,我強(qiáng)烈推薦ElasticSearch搭建小白指南給你,非常想盡的入門指南手冊。

在上一個(gè)博客中稍刀,我們了解了如何將Kibana用作開發(fā)工具以及如何使用Kibana加載示例數(shù)據(jù)。

從這個(gè)博客中敞曹,我們將研究Elasticsearch的查詢DSL账月,它非常強(qiáng)大,對于任何Elasticsearch用戶來說都是必不可少的知識領(lǐng)域澳迫。

Elasticsearch查詢類型

Elasticsearch中的查詢可以大致分為兩類局齿,

1.葉子查詢

葉子查詢在某些字段中查找特定值。這些查詢可以獨(dú)立使用橄登。其中一些查詢包括匹配抓歼,條件,范圍查詢拢锹。

2.復(fù)合查詢

復(fù)合查詢使用葉/復(fù)合查詢的組合谣妻。基本上卒稳,它們將多個(gè)查詢組合在一起以實(shí)現(xiàn)其目標(biāo)結(jié)果蹋半。

下圖大致顯示了這兩個(gè)查詢的大致分類:


如上圖所示,Leaf和化合物分類中仍然有許多類別充坑。在接下來的博客中减江,我們將更詳細(xì)地訪問上圖中的大多數(shù)查詢/查詢類型。

基本查詢樣本

現(xiàn)在捻爷,讓我們熟悉葉子的2個(gè)基本查詢和復(fù)合查詢類型中的一個(gè)查詢以開始操作辈灼。

1.簡單的“匹配”查詢

假設(shè)我們考慮建立索引的文件在以前的博客,讓我們嘗試在球場上“FIRST_NAME”為搜索關(guān)鍵詞“丹尼”的簡單匹配查詢也榄。該查詢將如下所示:

POST employees/_search{“query”:{“match”:{“country”:“China”}}}

上面的查詢將返回給我們所有國家為中國的文件

2.范圍查詢

現(xiàn)在讓我們觸發(fā)另一個(gè)查詢巡莹,這個(gè)查詢也是一個(gè)葉子查詢。該查詢將向我們返回所有薪水大于或等于500,000的員工¢泡海可以使用如下范圍查詢來實(shí)現(xiàn):

POST/_{“ query”:{“ range”:{“ salary”:{“ gte”:500000}}}}

3.布爾查詢

現(xiàn)在來了有趣的部分俐芯。我們?nèi)绾伪容^以上查詢棵介?也就是說钉鸯,我需要所有來自中國但收入超過50萬的員工。

這需要上述兩個(gè)葉查詢的組合∮柿桑現(xiàn)在唠雕,Elasticsearch提供了使用bool查詢組合這些查詢的工具。讓我們討論布爾查詢的一般結(jié)構(gòu)吨述,然后回到問題所在岩睁。

布爾查詢的一般結(jié)構(gòu):

POST _search{“ query”:{“ bool”:{“ must”:[...],“ filter”:[...]揣云,“ must_not”:[...]捕儒,“ should”:[..。]}}}

must:子句(查詢)必須出現(xiàn)在匹配的文檔中邓夕,并將有助于得分刘莹。

filter:子句(查詢)必須出現(xiàn)在匹配的文檔中。但是與查詢分?jǐn)?shù)不同的是焚刚,忽略該分?jǐn)?shù)点弯。

應(yīng)該:子句(查詢)應(yīng)出現(xiàn)在匹配的文檔中。

must_not:子句(查詢)不得出現(xiàn)在匹配的文檔中矿咕。

現(xiàn)在回到我們的問題抢肛,我們的bool查詢旨在重整所有來自中國的雇員并賺取超過500,000的工資,如下所示:

POST employee/_search{“ query”:{“ bool”:{“ must”:[{“ match”:{“ country”:“ China”}}碳柱,{“ range”:{“ salary”:{“ gte” :500000}}}]}}}

現(xiàn)在捡絮,讓我們考慮是否要從列表中篩選出所有男性雇員。我們應(yīng)該做什么莲镣?福稳。只需在上面的查詢中添加條件性別為“ Male”的must_not部分即可,如下所示:

POST employee/_search{“ query”:{“ bool”:{“ must”:[{“ match”:{“ country”:“ China”}}剥悟,{“ range”:{“ salary”:{“ gte” :500000}}}]灵寺,“ must_not”:[{“ match”:{“ gender”:“ Male”}}]}}}

查詢上下文和過濾器上下文

默認(rèn)情況下,Elasticsearch返回搜索結(jié)果時(shí)区岗,會根據(jù)它們的相關(guān)性得分對它們進(jìn)行排序略板,這表明文檔與查詢的匹配程度。計(jì)算該相關(guān)性分?jǐn)?shù)慈缔,并將其與每個(gè)結(jié)果一起返回到元數(shù)據(jù)的_score參數(shù)中叮称。

默認(rèn)情況下,這是一個(gè)正浮點(diǎn)數(shù)。

對于不同類型的查詢瓤檐,_score計(jì)算技術(shù)可能有所不同赂韵。也就是說,“匹配”查詢的得分計(jì)算可能與“跨度”查詢的得分計(jì)算不同挠蛉。

但最重要的是祭示,分?jǐn)?shù)計(jì)算取決于查詢子句運(yùn)行的上下文。也就是說谴古,查詢子句可以在“查詢”上下文或“過濾器”上下文中運(yùn)行质涛。

查詢上下文

在查詢上下文中執(zhí)行子句時(shí),它將查找“文檔與查詢的匹配程度”掰担。比賽越多汇陆,得分越高。

如下面的屏幕截圖所示:


【圖2】

在上面的示例中带饱,我在“標(biāo)題”字段中搜索了“導(dǎo)演”毡代。該查詢返回了一些結(jié)果,查找結(jié)果1勺疼,標(biāo)題與查詢子句(即關(guān)鍵字“ Director”和“ of”)完全匹配教寂。因此,第一份文檔的分?jǐn)?shù)更高恢口,為7.363

與第二個(gè)文檔中一樣孝宗,查詢子句中只有一個(gè)關(guān)鍵詞匹配(第二個(gè)文檔中只有“ Director”已經(jīng)匹配),因此比第一個(gè)文檔的得分少(5.305)耕肩。

因此因妇,與第二個(gè)文檔相比,第一個(gè)文檔的匹配度更高猿诸,這很明顯地反映在兩個(gè)文檔的_score元數(shù)據(jù)中婚被。

當(dāng)在查詢上下文中給出查詢子句時(shí),就會發(fā)生這種情況梳虽。

篩選條件

當(dāng)在過濾器上下文中給出查詢子句時(shí)址芯,它僅查看文檔是否包含not子句。這實(shí)際上是對/錯(cuò)的返回窜觉。假設(shè)我們在過濾器上下文中查詢數(shù)據(jù)谷炸,通過詢問文檔字段性別是否匹配“ Male”,我們將只獲得匹配的文檔禀挫,而沒有分?jǐn)?shù)旬陡。

與查詢上下文不同,篩選器上下文不使用時(shí)間來計(jì)算分?jǐn)?shù)语婴,因此篩選器上下文返回更快的結(jié)果描孟。

下圖顯示了涉及按性別過濾的過濾器上下文示例驶睦,如下圖所示:

【圖3】

在上面的示例中,您可以看到在過濾器上下文中應(yīng)用時(shí)匿醒,結(jié)果文檔的分?jǐn)?shù)返回0场航。

重新訪問布爾查詢。

考慮到上述情況廉羔,是時(shí)候重新討論布爾查詢了溉痢。

在布爾查詢中,必須和應(yīng)節(jié)將在查詢上下文中執(zhí)行蜜另,這意味著必須節(jié)中的子句將計(jì)算分?jǐn)?shù)适室。

bool查詢中的must_not和should部分在哪里執(zhí)行過濾條件中的查詢子句,并且不會影響評分举瑰。

為了演示,讓我們首先嘗試在must節(jié)中使用相同的查詢子句集蔬螟,然后在must節(jié)中應(yīng)用一個(gè)子句此迅,然后在過濾器節(jié)中應(yīng)用一個(gè)子句,然后查看分?jǐn)?shù)如何變化旧巾。

案例1:“必須”部分中的兩個(gè)子句


如您所見耸序,在上面的查詢中,兩個(gè)子句都處于相同的必須條件中鲁猩,并且第一個(gè)結(jié)果的文檔返回的分?jǐn)?shù)為2.4333658(在右側(cè)面板中)

情況2:一個(gè)子句移到過濾器部分

讓我們?nèi)缦乱苿?dòng)bool查詢中的filter子句中的gender子句坎怪,然后運(yùn)行查詢。


現(xiàn)在廓握,在右側(cè)面板中搅窿,看分?jǐn)?shù),你可以看到隙券,得分已經(jīng)下降到1.7261622男应,這意味著只有在clausein 必須的部分被計(jì)算為得分,并在該條款過濾器部分不用于評分娱仔。

為了確認(rèn)這一點(diǎn)沐飘,我們只能使用must節(jié)子句運(yùn)行上面的查詢,并查看它是否返回相同的分?jǐn)?shù)牲迫。


正如您所預(yù)測的那樣耐朴,即使從查詢中刪除了filter子句,您也可以從上面的圖片中看到分?jǐn)?shù)保持不變盹憎。

結(jié)論

在此博客中筛峭,我們剛剛熟悉了Elasticsearch查詢的分類,查詢的上下文以及一些最基本的查詢脚乡。

在下一個(gè)病房博客上蜒滩,我們將詳細(xì)探討每種查詢類型滨达,并提供更多示例和數(shù)據(jù)集。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俯艰,一起剝皮案震驚了整個(gè)濱河市捡遍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竹握,老刑警劉巖画株,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啦辐,居然都是意外死亡谓传,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門芹关,熙熙樓的掌柜王于貴愁眉苦臉地迎上來续挟,“玉大人,你說我怎么就攤上這事侥衬∈觯” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵轴总,是天一觀的道長直颅。 經(jīng)常有香客問我,道長怀樟,這世上最難降的妖魔是什么功偿? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮往堡,結(jié)果婚禮上械荷,老公的妹妹穿的比我還像新娘。我一直安慰自己投蝉,他們只是感情好养葵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘩缆,像睡著了一般关拒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庸娱,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天着绊,我揣著相機(jī)與錄音,去河邊找鬼熟尉。 笑死归露,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斤儿。 我是一名探鬼主播剧包,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼恐锦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疆液?” 一聲冷哼從身側(cè)響起一铅,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堕油,沒想到半個(gè)月后潘飘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掉缺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年卜录,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眶明。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艰毒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赘来,到底是詐尸還是另有隱情现喳,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布犬辰,位于F島的核電站,受9級特大地震影響冰单,放射性物質(zhì)發(fā)生泄漏幌缝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一诫欠、第九天 我趴在偏房一處隱蔽的房頂上張望涵卵。 院中可真熱鬧,春花似錦荒叼、人聲如沸轿偎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坏晦。三九已至,卻和暖如春嫁乘,著一層夾襖步出監(jiān)牢的瞬間昆婿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工蜓斧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仓蛆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓挎春,卻偏偏與公主長得像看疙,于是被迫代替她去往敵國和親豆拨。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355