Range是ElasticSearch中非常常見、重要的查詢類型之一。它允許您根據特定條件從文檔集合中返迴文檔,例如日期範圍、數字範圍等。在本文中,我們將對ElasticSearch Range進行詳細闡述,包括以下幾個方面:
一、範圍查詢匹配
範圍匹配查詢是ElasticSearch中最基本的查詢類型之一。範圍查詢非常適用於需要返回在給定範圍內的數字或日期的文檔集合。在Elasticsearch中,我們可以使用range查詢來過濾數值或日期值的範圍,例如:
GET /my_index/_search { "query": { "range": { "age": { "gte": 18, "lte": 30 } } } }
上述查詢會返迴文檔集合中年齡在18到30之間的文檔。
在範圍查詢中,我們還可以使用以下參數:
- gt:大於。
- gte:大於或等於。
- lt:小於。
- lte:小於或等於。
例如,如果我們想要查找年齡大於30的人,我們可以使用以下range查詢:
GET /my_index/_search { "query": { "range": { "age": { "gt": 30 } } } }
二、範圍聚合查詢
在ElasticSearch中,我們還可以使用查詢聚合來查找滿足特定查詢條件的文檔數量。例如,我們可以使用範圍聚合查詢來查找年齡在18到30之間的人的數量:
GET /my_index/_search { "aggs": { "age_range": { "range": { "field": "age", "ranges": [ { "from": 18, "to": 30 } ] } } } }
上述查詢將返回年齡在18到30之間的人的數量。
在範圍聚合查詢中,我們還可以使用以下參數:
- keyed:如果設置為true,則返回映射形式的聚合結果。
- ranges:定義聚合範圍的數組。
- field:要聚合的字段名稱。
三、範圍過濾查詢
範圍過濾查詢可以讓我們從文檔集合中過濾出特定範圍的文檔。例如,我們可以查找在某段時間內被修改的文檔:
GET /my_index/_search { "query": { "bool": { "filter": { "range": { "modified_date": { "gte": "2022-01-01", "lte": "2022-06-30" } } } } } }
上述查詢將返回在2022年1月1日至2022年6月30日之間被修改的文檔。
在範圍過濾查詢中,我們還可以使用以下參數:
- keyed:如果設置為true,則返回映射形式的聚合結果。
- ranges:定義聚合範圍的數組。
- field:要聚合的字段名稱。
四、日期範圍查詢
ElasticSearch支持使用日期範圍查詢來查找在特定時間範圍內創建或修改的文檔。例如,我們可以查找最近24小時內被修改的文檔:
GET /my_index/_search { "query": { "bool": { "filter": { "range": { "modified_date": { "gte": "now-1d", "lte": "now" } } } } } }
上述查詢將返回最近24小時內被修改的文檔。
在日期範圍查詢中,我們還可以使用以下參數:
- format:要使用的日期格式。
- gt:大於。
- gte:大於或等於。
- lt:小於。
- lte:小於或等於。
五、數字範圍查詢
數字範圍查詢可以讓我們從文檔集合中過濾出特定數字範圍的文檔。例如,我們可以查找在某個價格範圍內的文檔:
GET /my_index/_search { "query": { "range": { "price": { "gte": 10, "lte": 50 } } } }
上述查詢將返回價格在10到50之間的文檔。
在數字範圍查詢中,我們還可以使用以下參數:
- gt:大於。
- gte:大於或等於。
- lt:小於。
- lte:小於或等於。
- boost:查詢偏好。
總結
本文詳細介紹了ElasticSearch中的範圍查詢,包括範圍匹配查詢、範圍聚合查詢、範圍過濾查詢、日期範圍查詢和數字範圍查詢。範圍查詢是ElasticSearch中非常常見、重要的查詢類型之一,對於使用ElasticSearch進行數據檢索的開發人員非常有幫助。
原創文章,作者:VRNOL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332555.html