## 開始搜索
將一些數據攝取到Elasticsearch索引后,您可以通過將請求發送到`_search`端點來對其進行搜索。要訪問全套搜索功能,請使用Elasticsearch Query DSL在請求正文中指定搜索條件。您可以在請求URI中指定要搜索的索引的名稱。
例如,以下請求檢索`bank`按帳號排序的索引中的所有文檔:
~~~
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
~~~
默認情況下,`hits`響應部分包含與搜索條件匹配的前10個文檔:
~~~
{
"took" : 63,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value": 1000,
"relation": "eq"
},
"max_score" : null,
"hits" : [ {
"_index" : "bank",
"_type" : "_doc",
"_id" : "0",
"sort": [0],
"_score" : null,
"_source" : {"account_number":0,"balance":16623,"firstname":"Bradshaw","lastname":"Mckenzie","age":29,"gender":"F","address":"244 Columbus Place","employer":"Euron","email":"bradshawmckenzie@euron.com","city":"Hobucken","state":"CO"}
}, {
"_index" : "bank",
"_type" : "_doc",
"_id" : "1",
"sort": [1],
"_score" : null,
"_source" : {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
}, ...
]
}
}
~~~
該響應還提供有關搜索請求的以下信息:
* `took`– Elasticsearch運行查詢多長時間(以毫秒為單位)
* `timed_out`–搜索請求是否超時
* `_shards`–搜索了多少個分片以及成功,失敗或跳過了多少個分片。
* `max_score`–找到的最相關文件的分數
* `hits.total.value`\-找到了多少個匹配的文檔
* `hits.sort`\-文檔的排序位置(不按相關性得分排序時)
* `hits._score`\-文檔的相關性得分(使用時不適用`match_all`)
每個搜索請求都是獨立的:Elasticsearch在請求中不維護任何狀態信息。要翻閱搜索結果,請在您的請求中指定`from`和`size`參數。
例如,以下請求的匹配數為10到19:
~~~
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
],
"from": 10,
"size": 10
}
~~~
既然您已經了解了如何提交基本的搜索請求,則可以開始構建比有趣的查詢`match_all`。
要在字段中搜索特定術語,可以使用`match`查詢。例如,以下請求搜索該`address`字段以查找地址包含`mill`或的客戶`lane`:
~~~
GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
~~~
要執行詞組搜索而不是匹配單個詞,請使用`match_phrase`代替`match`。例如,以下請求僅匹配包含短語的地址`mill lane`:
~~~
GET /bank/_search
{
"query": { "match_phrase": { "address": "mill lane" } }
}
~~~
要構造更復雜的查詢,可以使用`bool`查詢來組合多個查詢條件。您可以根據需要(必須匹配),期望(應該匹配)或不期望(必須不匹配)指定條件。
例如,以下請求在`bank`索引中搜索屬于40歲客戶的帳戶,但不包括居住在愛達荷州(ID)的任何人:
~~~
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
~~~
布爾查詢中的每個`must`,`should`和`must_not`元素稱為查詢子句。文檔滿足每個條款`must`或`should`條款的標準的程度有助于文檔的*相關性得分*。分數越高,文檔就越符合您的搜索條件。默認情況下,Elasticsearch返回按這些相關性分數排名的文檔。
`must_not`子句中的條件被視為*過濾器*。它會影響文檔是否包含在結果中,但不會影響文檔的評分方式。您還可以顯式指定任意過濾器,以基于結構化數據包括或排除文檔。
例如,以下請求使用范圍過濾器將結果限制為余額在20,000美元到30,000美元(含)之間的帳戶。
~~~
GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
~~~
- Elasticsearch簡介
- 數據輸入:文檔和索引
- 信息輸出:搜索和分析
- 可擴展性和彈性
- Elasticsearch入門
- 啟動并運行Elasticsearch
- 索引文件
- 開始搜索
- 使用匯總分析結果
- 從這里開始
- 設置Elasticsearch
- 安裝Elasticsearch
- 從Linux或MacOS上的存檔安裝Elasticsearch
- 在Windows上安裝Elasticsearch
- 使用Debian軟件包安裝Elasticsearch
- 使用RPM安裝Elasticsearch
- 使用Windows MSI安裝程序安裝Elasticsearch
- 使用Docker安裝Elasticsearch
- 使用Homebrew在macOS上安裝Elasticsearch
- 配置Elasticsearch
- 設置JVM選項
- 安全設定
- 記錄配置
- 審核設置
- 跨集群復制設置
- 轉換設定
- 索引生命周期管理設置
- 許可設置
- 機器學習設置
- 監控設定
- 保護設置
- SQL訪問設置
- 觀察者設置
- 重要的Elasticsearch配置
- path.data 和 path.logs
- cluster.name
- node.name
- network.host
- 發現和集群形成設置
- 設置堆大小
- JVM堆轉儲路徑
- GC記錄
- 臨時目錄
- JVM致命錯誤日志
- 重要系統配置
- 配置系統設置
- 禁用交換
- 文件描述符
- 虛擬內存
- 線程數
- DNS緩存設置
- JNA臨時目錄未裝入 noexec
- 引導檢查
- 堆大小檢查
- 文件描述符檢查
- 內存鎖檢查
- 最大線程數檢查
- 最大文件大小檢查
- 虛擬內存最大大小檢查
- 最大地圖計數檢查
- 客戶端JVM檢查
- 使用串行收集器檢查
- 系統調用過濾器檢查
- OnError和OnOutOfMemoryError檢查
- 搶先檢查
- G1GC檢查
- 所有權限檢查
- 發現配置檢查
- 啟動Elasticsearch
- 停止Elasticsearch
- 將節點添加到集群
- 全集群重啟和滾動重啟
- 設置X-Pack
- 配置X-Pack Java客戶端
- 引導程序檢查X-Pack
- 升級Elasticsearch
- 滾動升級
- 完整集群重新啟動升級
- 升級前重新索引
- 重新索引到位
- 從遠程群集重新索引
- 集合
- 度量聚合
- 平均聚合
- 加權平均聚合
- 基數聚合
- 擴展統計匯總
- 地理邊界聚合
- 地心聚集
- 最大聚集
- 最小集合
- 百分位數匯總
- 百分數排名匯總
- 腳本式指標聚合
- 統計匯總
- 字符串統計匯總
- 總和
- 熱門合集
- 價值計數匯總
- 中位數絕對偏差匯總
- 桶聚合
- 鄰接矩陣匯總
- 自動間隔日期直方圖聚合
- 子集聚集
- 復合聚集
- 日期直方圖匯總
- 日期范圍匯總
- 多元化的采樣器聚合
- 篩選器匯總
- 篩選匯總
- 地理距離匯總
- GeoHash網格聚合
- GeoTile網格聚合
- 全局聚合
- 直方圖聚合
- IP范圍匯總
- 缺少聚合
- 嵌套聚合
- 父級匯總
- 范圍匯總
- rare terms 聚集
- 反向嵌套聚合
- 采樣器聚合
- 重要術語匯總
- 重要的文字匯整
- 術語匯總
- 鏟斗范圍字段的精妙之處
- 管道聚合
- 平均存儲桶聚合
- 導數聚合
- 最大存儲桶聚合
- 最小存儲桶聚合
- 總和桶聚合
- 統計數據桶匯總
- 擴展的統計數據桶聚合
- 百分位桶聚合
- 查詢DSL
- 查詢和過濾上下文
- 跨集群搜索
- 腳本編寫
- 如何使用腳本
- 映射
- 刪除映射類型
- 文字分析
- 文字分析總覽
- 模組
- 發現和集群形成
- 索引模塊
- 分析
- 攝取節點
- 管道定義
- 管理索引生命周期
- 索引總覽
- SQL訪問
- SQL總覽
- 監控集群
- 監控總覽
- 凍結指標
- 最佳實務
- 匯總或轉換數據
- 匯總歷史數據
- 設置集群以實現高可用性
- 備份集群
- 快照和還原
- 注冊資料庫
- 保護集群
- 安全概述
- 警報群集和索引事件
- Watcher入門
- 命令行工具
- 彈性搜索證書
- 如何
- 一般建議
- 專業術語
- REST API
- API約定
- 發布要點
- 7.6.0
- 重大變化
- 7.6
- 發行說明
- Elasticsearch版本7.6.2