麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Elasticsearch5.20 基本語法之查詢

2024-07-21 02:52:40
字體:
來源:轉載
供稿:網友
Elasticsearch5.20 基本語法之查詢這里我們先導入測試數據accounts.json( 下載地址:http://download.csdn.net/detail/taoshujian/9766616 )Elasticsearch導入json數據的語法如下:
curl -XPOST localhost:9200/bank/account/_bulk?PRetty  --data-binary "@E:/programme/_backups/accounts.json"@后面為文件路徑,也可是相對路徑如果你的windows下沒有curl命令,可以看看這里: http://blog.csdn.net/taoshujian/article/details/60147463Elasticsearch查詢有兩種基本方式:URI和request body下面先看一個查詢示例:通過URI方式查詢執行如下命令:
#REST request URIGET /bank/_search?q=*&sort=account_number:asc&pretty返回結果如下:這里q=*參數表示匹配所有文檔。sort=account_number:asc參數表示按account_number對結果進行升序排序。pretty參數表示格式化JSON結果。至于響應,我們看到以下部分:took - Elasticsearch執行搜索的時間(以毫秒為單位)timed_out - 告訴我們搜索是否超時_shards - 告訴我們搜索了多少分片,以及成功/失敗的搜索分片的計數hits - 搜索結果hits.total - 符合我們的搜索條件的文檔總數hits.hits - 搜索結果的實際數組(默認為前10個文檔)hits.sort - 結果排序鍵(如果按分數排序,則缺少)同樣的查詢規則通過request body方式查詢時語法如下:
#REST request bodyGET /bank/_search{  "query": { "match_all": {} },  "sort": [    { "account_number": "asc" }  ]}Elasticsearch提供了一種JSON風格的語言,可用于執行查詢。這被稱為Query DSL。查詢語言相當全面,實際學習它還是要從幾個基本的例子開始。
#查詢所有  GET /bank/_search{  "query": { "match_all": {} }}#查詢一條  注: 默認情況下查詢的就是所有數據,所以示例中"query": { "match_all": {} }不是必寫的GET /bank/_search{  "query": { "match_all": {} },  "size": 1}#查詢第11至第20條數據 注:from默認從0開始的GET /bank/_search{  "query": { "match_all": {} },  "from": 10,  "size": 10}#按balance降序GET /bank/_search{  "query": { "match_all": {} },  "sort": { "balance": { "order": "desc" } }}#只查詢account_number和balanceGET /bank/_search{  "query": { "match_all": {} },  "_source": ["account_number", "balance"]}可以將match查詢視為基本的字段化搜索查詢(即針對特定字段或字段集進行的搜索)。
#查詢account_number=20的帳戶GET /bank/_search{  "query": { "match": { "account_number": 20 } }}#查詢在address中包含術語“mill”的所有帳戶GET /bank/_search{  "query": { "match": { "address": "mill" } }}#查詢在address中包含“mill”或“lane”一詞的所有帳戶:GET /bank/_search{  "query": { "match": { "address": "mill lane" } }}#此示例是match(match_phrase)的變體,查詢在address中包含短語“mill lane”的所有帳戶:GET /bank/_search{  "query": { "match_phrase": { "address": "mill lane" } }}bool查詢允許我們撰寫較小的查詢到使用布爾邏輯更大的查詢
#此示例編寫兩個match查詢,即查詢address中包含“mill”和“lane”的所有帳戶。bool must子句表示所有條件必須滿足 類似于判斷條件中的&&。GET /bank/_search{  "query": {    "bool": {      "must": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#相比之下,此示例中兩個match則是查詢并address中包含“mill”或“lane”的所有帳戶。bool should類似于判斷條件中的||GET /bank/_search{  "query": {    "bool": {      "should": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#此示例的兩個match查詢,則是查詢address中既不包含“mill”也不包含“lane”的所有帳戶。GET /bank/_search{  "query": {    "bool": {      "must_not": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#我們可以在查詢中同時合并must,should和must_not子句bool。此外,我們可以bool在任何這些bool子句中組合查詢來模擬任何復雜的多級布爾邏輯。此示例返回任何age=40但state!=ID的所有帳戶:GET /bank/_search{  "query": {    "bool": {      "must": [        { "match": { "age": "40" } }      ],      "must_not": [        { "match": { "state": "ID" } }      ]    }  }}關于過濾器filters的查詢
#range查詢,它允許我們通過一定范圍的值來過濾文檔。這通常用于數字或日期過濾。#使用bool查詢返回余額介于20000和30000(含)之間的所有帳戶。換句話說,我們想要找出余額大于或等于20000且小于或等于30000的帳戶。GET /bank/_search{  "query": {    "bool": {      "must": { "match_all": {} },      "filter": {        "range": {          "balance": {            "gte": 20000,            "lte": 30000          }        }      }    }  }}#解析上面的查詢,bool查詢包含一個match_all查詢(查詢部分)和一個range查詢(過濾器部分)。我們可以將任何其他查詢替換為查詢和過濾器部分。關于分組聚合查詢
#這個例子按狀態分組所有的帳戶,然后返回前10(默認)狀態,按照count遞減排序(也是默認)GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyWord"      }    }  }}#與SQL語法相識:SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC#注:設置size=0為不顯示搜索匹配。你可以不寫size=0看看返回結果#下面示例計算按州(state)的平均帳戶余額(僅針對按降序排序的前10個州)GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyword"      },      "aggs": {        "average_balance": {          "avg": {            "field": "balance"          }        }      }    }  }}#注意我們如何在average_balance聚合中嵌套group_by_state聚合。這是所有聚合的常見模式。您可以任意嵌套聚合中的聚合,以提取您需要從數據中獲得的透視摘要。基于之前的聚合,現在我們以降序對平均余額進行排序GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyword",        "order": {          "average_balance": "desc"        }      },      "aggs": {        "average_balance": {          "avg": {            "field": "balance"          }        }      }    }  }}#這個例子演示了我們如何根據年齡段(20-29,30-39和40-49),然后按性別分組,然后最終得到每個年齡段的每個性別的平均帳戶余額:GET /bank/_search{  "size": 0,  "aggs": {    "group_by_age": {      "range": {        "field": "age",        "ranges": [          {            "from": 20,            "to": 30          },          {            "from": 30,            "to": 40          },          {            "from": 40,            "to": 50          }        ]      },      "aggs": {        "group_by_gender": {          "terms": {            "field": "gender.keyword"          },          "aggs": {            "average_balance": {              "avg": {                "field": "balance"              }            }          }        }      }    }  }}到這里我們會發現ElasticSearch的語法和SQL其實是異曲同工的。它因為功能強大而簡單,亦因為功能強大而復雜。事實上我這幾篇關于Elasticsearch的筆記都是根據它的官網來的,自己并沒增加什么東西,因為官方文檔很清晰了,而且我也沒有刪減什么內容,因為這些都是必要的。看過這些后,基本的增刪改查已經沒什么問題,算是上手了,那么后續將會看看它的理論基礎部份。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久婷婷一区二区三区不卡 | 黄色成年在线观看 | 国产黄色录像片 | 亚洲成人第一区 | 色婷婷久久一区二区 | 一级美女大片 | xxxx hd videos | 国产91一区 | 黄色毛片免费看 | 日韩黄色影视 | 欧美性生交大片 | 精品一区二区电影 | 国产无遮挡一级毛片 | 免费网站看毛片 | hd性videos意大利复古 | 色妇视频| 国产成人高清在线观看 | 精品久久久久久 | avlululu| 77成人影院 | 毛片在线免费播放 | 色无极影院亚洲 | 牛牛热这里只有精品 | 久久久久电影网站 | 激情黄页| 欧美一级黄色免费看 | 中文字幕免费在线观看视频 | 毛片网站视频 | 久夜草| 欧美一区二区三区久久精品视 | 欧美www | 日韩剧情片 | 久久久久久久久久久久久久av | 国产一级做a爰片在线看 | a免费视频| 久久亚洲精品国产一区 | 成人在线视频在线观看 | 欧美一级高潮 | 久久亚洲春色中文字幕久久 | 久草在线免费看 | 欧美精品一级 |