Elasticsearch 基於 URL 的搜索請求


背景

Elasticsearch 不像關系型數據庫,沒有簡易的 SQL 用來查詢數據,只能通過調用 RESTful API 實現查詢。大體上查詢分為兩種,基於 URL 的和基於請求主體的。基於 URL 的方式比較簡單清晰,用得較多,在這簡單記錄下。

 

基本模式

基於 URL 的搜索請求基本模式如上圖所示:
1,是一個 Linux curl 命令,利用命令行的方式發起一個 HTTP 命令;
2,則是url路徑,指明搜索范圍,比如上圖所指的搜索范圍就是 get-together 索引下的 group 類型;
3,是 _search 端點(Endpoint),表明這是一個搜索請求;
4,傳入一個 pretty參數,美化(格式化)返回結果,非必填。
運行該條命令后,會查詢出get-together 索引下的 group 類型下的所有文檔。

 

q

q 參數用於指定搜索的關鍵詞

# 搜索 get-together 索引,group 類型中,包含“elasticsearch”的文檔
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch'

# 搜索 get-together 索引,group 類型中,屬性 description 包含“elasticsearch”的文檔
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=description:elasticsearch'

 

from & size

假設某個搜索請求會返回一大批文檔,出於網絡性能的考慮,往往不需要全部返回,所以可以使用 from,size 來達到限制結果集數量的目的。from 指定起始,size 指定起始后多少條文檔,比如 from=0,size=2,表明從第0條開始返回,最多返回兩條文檔,如下所示。

curl -X GET 'localhost:9200/get-together/group/_search?pretty&from=0&size=2'

size如果不指定,默認為10

 

sort

對結果排序,默認是降序,可以利用 asc,desc 表明是升序還是降序,另外除了對文檔屬性值進行排序,還可以對文檔的評分進行排序

# 對 created_on 字段進行排序,利用asc,desc指明是升序還是降序
curl -X GET 'localhost:9200/get-together/group/_search?pretty&sort=created_on:asc'
curl -X GET 'localhost:9200/get-together/group/_search?pretty&sort=created_on:desc'

# 對文檔的評分進行排序
curl -X GET 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch&sort=_score'

 

_source

或出於網絡性能,或出於結果清晰,往往只關注文檔的某幾個屬性。我們可以使用 _source 來指明只返回哪些屬性

curl -X GET 'localhost:9200/get-together/group/_search?pretty&_source=organizer,description'

 

引用

1.《Elasticsearch 實戰》- Radu Gheorghe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM