最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

袁庭新老師ES系列12節(jié)|Elasticsearch高級查詢

2023-09-20 11:44 作者:袁庭新  | 我要投稿

前言

上篇文章講了關(guān)于Elasticsearch的基本查詢操作。接下來袁老師為大家?guī)鞥lasticsearch高級查詢部分相關(guān)的內(nèi)容。Elasticsearch是基于JSON提供完整的查詢DSL(Domain Specific Language:領(lǐng)域特定語言)來定義查詢。因此,我們有必要在專題模塊來詳細(xì)探討Elasticsearch高級查詢部分內(nèi)容。

我們先來做個熱身,了解下這一小節(jié)學(xué)習(xí)的目標(biāo),我將帶領(lǐng)大家從以下五個模塊來學(xué)習(xí)Elasticsearch的高級查詢相關(guān)技術(shù)。

  • 結(jié)果過濾查詢

  • 條件過濾查詢

  • 結(jié)果排序

  • 分頁查詢

  • 高亮顯示

一.?結(jié)果過濾查詢

默認(rèn)情況下,Elasticsearch在搜索的結(jié)果中,會把文檔中保存在_source的所有字段都返回。

如果我們只想獲取其中的部分字段,我們可以添加_source屬性來進(jìn)行過濾。

1.直接指定字段

演示示例:

語法說明:在查詢結(jié)構(gòu)中,通過_source屬性來指定查詢結(jié)果集中需要保留哪些字段信息。

響應(yīng)結(jié)果:

演示過程見下:

2.指定includes和excludes

我們也可以通過:

注意:二者都是可選的。

演示示例:

響應(yīng)結(jié)果:

演示效果見下:

下面的示例與上面的結(jié)果將是一樣的:

響應(yīng)結(jié)果:

演示效果見下:

二. filter過濾

Elasticsearch使用的查詢語言(DSL)擁有一套查詢組件,這些組件可以以無限組合的方式進(jìn)行搭配。這套組件可以在以下兩種情況下使用:過濾情況(?ltering context)和查詢情況(query context)。

如何選擇查詢與過濾?通常的規(guī)則是,使用查詢(query)語句來進(jìn)行全文搜索或者其它任何需要影響相關(guān)性得分的搜索。除此以外的情況都使用過濾(?lters)。

1.條件查詢中進(jìn)行過濾

所有的查詢都會影響到文檔的評分及排名。如果我們需要在查詢結(jié)果中進(jìn)行過濾,并且不希望過濾條件影響評分,那么就不要把過濾條件作為查詢條件來用。而是使用filter方式:

響應(yīng)結(jié)果:

演示效果見下:

2.無查詢條件直接過濾

如果一次查詢只有過濾,沒有查詢條件,不希望進(jìn)行評分,我們可以使用constant_score取代只有?lter語句的bool查詢。在性能上是完全相同的,但對于提高查詢簡潔性和清晰度有很大幫助。

響應(yīng)結(jié)果:

演示效果見下:

三. 結(jié)果排序

1.單字段排序

sort可以讓我們按照不同的字段進(jìn)行排序,并且通過order屬性指定排序的方式。

演示案例:

響應(yīng)結(jié)果:

2.多字段排序

假定我們想要結(jié)合使用price和_score(得分)進(jìn)行查詢,并且匹配的結(jié)果首先按照價格排序,然后再按照相關(guān)性得分降序排序:

響應(yīng)結(jié)果:

四. 分頁查詢

Elasticsearch中數(shù)據(jù)都存儲在分片中,當(dāng)執(zhí)行搜索時每個分片獨立搜索后,數(shù)據(jù)再經(jīng)過整合返回。那么,如果要實現(xiàn)分頁查詢該怎么辦呢?

Elasticsearch的分頁與MySQL數(shù)據(jù)庫非常相似,都是指定兩個值:

演示案例:

響應(yīng)結(jié)果:

五. 高亮顯示

1.高亮顯示原理

高亮顯示的原理介紹見下:

  • 服務(wù)端搜索數(shù)據(jù),得到搜索結(jié)果。

  • 把搜索結(jié)果中,搜索關(guān)鍵字都加上約定好的標(biāo)簽。

  • 前端頁面提前寫好標(biāo)簽的CSS樣式,即可高亮顯示。

Elasticsearch中實現(xiàn)高亮的語法比較簡單,高亮顯示語法格式見下:

在使用match查詢的同時,加上一個highlight屬性。highlight屬性提供以下屬性:

演示案例:

響應(yīng)結(jié)果:

?演示過程見下:

六. 結(jié)語

關(guān)于Elasticsearch高級查詢篇相關(guān)的內(nèi)容我們就給大家介紹完了,來復(fù)習(xí)回顧下這一章節(jié)的主要內(nèi)容。本文從結(jié)果過濾查詢、結(jié)果排序、分頁查詢、檢索查詢、關(guān)鍵字查詢、高亮顯示、過濾查詢等幾個方面通過實例講解了Elasticsearch的高級查詢。如果還沒有掌握的小伙伴,一定要通過文章中大量的案例來進(jìn)行實操演練從而鞏固這一部分知識。下一小節(jié)我們將為大家?guī)鞥lasticsearch中聚合操作相關(guān)的內(nèi)容。

袁庭新老師ES系列12節(jié)|Elasticsearch高級查詢的評論 (共 條)

分享到微博請遵守國家法律
宁乡县| 新密市| 休宁县| 镇坪县| 景洪市| 南部县| 芮城县| 闽侯县| 西平县| 开阳县| 炎陵县| 涞水县| 扶绥县| 遂平县| 南涧| 兴文县| 苍山县| 济南市| 保亭| 临澧县| 咸宁市| 辽中县| 饶阳县| 德兴市| 阿尔山市| 开江县| 浪卡子县| 凤城市| 林州市| 耿马| 北京市| 瓮安县| 新田县| 湄潭县| 金山区| 洪湖市| 乐至县| 马山县| 睢宁县| 东宁县| 健康|