袁庭新老師ES系列16節(jié)|Elasticsearch客戶端高級操作
前言
上一章節(jié)袁老師主要帶領(lǐng)大家學習了Elasticsearch客戶端基礎(chǔ)部分的內(nèi)容,Elasticsearch客戶端還有很多高級相關(guān)的操作,這一章節(jié)主要帶領(lǐng)大家來學習Elasticsearch客戶端高級相關(guān)的操作。接下來就跟上袁老師的節(jié)奏繼續(xù)探討Elasticsearch的相關(guān)知識。

1.查詢所有match_all
1.先準備一部分數(shù)據(jù)。通過Kibana向yx索引庫中插入以下5條數(shù)據(jù)。
2.在ElasticsearchTests類中編寫查詢所有文檔的matchAllQuery()方法。
3.運行matchAllQuery()方法,輸出結(jié)果見下:
注意,上面的代碼中,搜索條件是通過sourceBuilder.query(QueryBuilders.matchAllQuery())來添加的。這個query()方法接受的參數(shù)是QueryBuilder接口類型。
這個接口提供了很多實現(xiàn)類,分別對應(yīng)我們在之前學習的不同類型的查詢。例如:term查詢、match查詢、range查詢、boolean查詢等。見下圖(Mac快捷鍵:command+option+B):

因此,我們?nèi)绻褂酶鞣N不同查詢,其實僅僅是傳遞給sourceBuilder.query(QueryBuilder query)方法的參數(shù)不同而已。而這些實現(xiàn)類不需要我們?nèi)ナ謩觿?chuàng)建 ,官方提供了QueryBuilders工廠幫我們構(gòu)建各種實現(xiàn)類。
2.關(guān)鍵字搜索match
1.在ElasticsearchTests類中定義關(guān)鍵字查詢文檔數(shù)據(jù)的matchQuery()方法。
2.運行matchQuery()方法,輸出結(jié)果見下:
其實搜索類型的變化,僅僅是利用QueryBuilders構(gòu)建的查詢對象不同而已,其他代碼基本一致。因此,我們可以把這段代碼封裝,然后把查詢條件作為參數(shù)傳遞。
3.在ElasticsearchTests類中定義basicQuery()方法封裝代碼,然后重構(gòu)matchQuery()方法。
3.范圍查詢range
QueryBuilders類中定義返回查詢的方法。
RangeQueryBuilder提供多種范圍查詢API,常見用的見下:

1.在ElasticsearchTests類中定義范圍查詢的rangeQuery()方法。
2.運行rangeQuery()方法,輸出結(jié)果見下:
4.source過濾
默認情況下,索引庫中所有數(shù)據(jù)都會返回(_source屬性中存儲原始文檔),如果我們想只返回部分字段,可以通過source filter來控制。
1.在ElasticsearchTests類中定義過濾查詢的sourceFilter()方法。
2.運行sourceFilter()方法,輸出結(jié)果見下:
二. 排序
排序依然是通過SearchSourceBuilder來進行配置。
1.在ElasticsearchTests類中定義過濾查詢的sort()方法。
2.運行sort()方法,輸出結(jié)果見下:
三. 分頁
1.分頁語法
分頁需要視圖層傳遞兩個參數(shù)給后臺。

2.分頁案例
1.在ElasticsearchTests類中定義分頁查詢的paging()方法。
2.運行paging()方法,輸出結(jié)果見下:
四.?結(jié)語
Elasticsearch客戶端高級操作的內(nèi)容袁老師就帶領(lǐng)大學學習到這里,這一章節(jié)主要帶領(lǐng)大學學習了:搜索數(shù)據(jù),包括查詢所有match_all、關(guān)鍵字搜索match、范圍查詢range和source過濾內(nèi)容,同時還介紹了排序和分頁等操作。好了關(guān)于Elasticsearch客戶端操作的所有內(nèi)容我們就學完啦。
今天的內(nèi)容就分享到這里吧。關(guān)注「袁庭新」,干貨天天都不斷!
