背景 Elasticsearch 不像關係型資料庫,沒有簡易的 SQL 用來查詢數據,只能通過調用 RESTful API 實現查詢。大體上查詢分為兩種,基於 URL 的和基於請求主體的。基於 URL 的方式比較簡單清晰,用得較多,在這簡單記錄下。 基本模式 基於 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