国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

Elasticsearch5.20 基本語(yǔ)法之查詢

2024-07-21 02:52:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
Elasticsearch5.20 基本語(yǔ)法之查詢這里我們先導(dǎo)入測(cè)試數(shù)據(jù)accounts.json( 下載地址:http://download.csdn.net/detail/taoshujian/9766616 )Elasticsearch導(dǎo)入json數(shù)據(jù)的語(yǔ)法如下:
curl -XPOST localhost:9200/bank/account/_bulk?PRetty  --data-binary "@E:/programme/_backups/accounts.json"@后面為文件路徑,也可是相對(duì)路徑如果你的windows下沒(méi)有curl命令,可以看看這里: http://blog.csdn.net/taoshujian/article/details/60147463Elasticsearch查詢有兩種基本方式:URI和request body下面先看一個(gè)查詢示例:通過(guò)URI方式查詢執(zhí)行如下命令:
#REST request URIGET /bank/_search?q=*&sort=account_number:asc&pretty返回結(jié)果如下:這里q=*參數(shù)表示匹配所有文檔。sort=account_number:asc參數(shù)表示按account_number對(duì)結(jié)果進(jìn)行升序排序。pretty參數(shù)表示格式化JSON結(jié)果。至于響應(yīng),我們看到以下部分:took - Elasticsearch執(zhí)行搜索的時(shí)間(以毫秒為單位)timed_out - 告訴我們搜索是否超時(shí)_shards - 告訴我們搜索了多少分片,以及成功/失敗的搜索分片的計(jì)數(shù)hits - 搜索結(jié)果hits.total - 符合我們的搜索條件的文檔總數(shù)hits.hits - 搜索結(jié)果的實(shí)際數(shù)組(默認(rèn)為前10個(gè)文檔)hits.sort - 結(jié)果排序鍵(如果按分?jǐn)?shù)排序,則缺少)同樣的查詢規(guī)則通過(guò)request body方式查詢時(shí)語(yǔ)法如下:
#REST request bodyGET /bank/_search{  "query": { "match_all": {} },  "sort": [    { "account_number": "asc" }  ]}Elasticsearch提供了一種JSON風(fēng)格的語(yǔ)言,可用于執(zhí)行查詢。這被稱為Query DSL。查詢語(yǔ)言相當(dāng)全面,實(shí)際學(xué)習(xí)它還是要從幾個(gè)基本的例子開(kāi)始。
#查詢所有  GET /bank/_search{  "query": { "match_all": {} }}#查詢一條  注: 默認(rèn)情況下查詢的就是所有數(shù)據(jù),所以示例中"query": { "match_all": {} }不是必寫(xiě)的GET /bank/_search{  "query": { "match_all": {} },  "size": 1}#查詢第11至第20條數(shù)據(jù) 注:from默認(rèn)從0開(kāi)始的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查詢視為基本的字段化搜索查詢(即針對(duì)特定字段或字段集進(jìn)行的搜索)。
#查詢account_number=20的帳戶GET /bank/_search{  "query": { "match": { "account_number": 20 } }}#查詢?cè)赼ddress中包含術(shù)語(yǔ)“mill”的所有帳戶GET /bank/_search{  "query": { "match": { "address": "mill" } }}#查詢?cè)赼ddress中包含“mill”或“l(fā)ane”一詞的所有帳戶:GET /bank/_search{  "query": { "match": { "address": "mill lane" } }}#此示例是match(match_phrase)的變體,查詢?cè)赼ddress中包含短語(yǔ)“mill lane”的所有帳戶:GET /bank/_search{  "query": { "match_phrase": { "address": "mill lane" } }}bool查詢?cè)试S我們撰寫(xiě)較小的查詢到使用布爾邏輯更大的查詢
#此示例編寫(xiě)兩個(gè)match查詢,即查詢address中包含“mill”和“l(fā)ane”的所有帳戶。bool must子句表示所有條件必須滿足 類似于判斷條件中的&&。GET /bank/_search{  "query": {    "bool": {      "must": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#相比之下,此示例中兩個(gè)match則是查詢并address中包含“mill”或“l(fā)ane”的所有帳戶。bool should類似于判斷條件中的||GET /bank/_search{  "query": {    "bool": {      "should": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#此示例的兩個(gè)match查詢,則是查詢address中既不包含“mill”也不包含“l(fā)ane”的所有帳戶。GET /bank/_search{  "query": {    "bool": {      "must_not": [        { "match": { "address": "mill" } },        { "match": { "address": "lane" } }      ]    }  }}#我們可以在查詢中同時(shí)合并must,should和must_not子句bool。此外,我們可以bool在任何這些bool子句中組合查詢來(lái)模擬任何復(fù)雜的多級(jí)布爾邏輯。此示例返回任何age=40但state!=ID的所有帳戶:GET /bank/_search{  "query": {    "bool": {      "must": [        { "match": { "age": "40" } }      ],      "must_not": [        { "match": { "state": "ID" } }      ]    }  }}關(guān)于過(guò)濾器filters的查詢
#range查詢,它允許我們通過(guò)一定范圍的值來(lái)過(guò)濾文檔。這通常用于數(shù)字或日期過(guò)濾。#使用bool查詢返回余額介于20000和30000(含)之間的所有帳戶。換句話說(shuō),我們想要找出余額大于或等于20000且小于或等于30000的帳戶。GET /bank/_search{  "query": {    "bool": {      "must": { "match_all": {} },      "filter": {        "range": {          "balance": {            "gte": 20000,            "lte": 30000          }        }      }    }  }}#解析上面的查詢,bool查詢包含一個(gè)match_all查詢(查詢部分)和一個(gè)range查詢(過(guò)濾器部分)。我們可以將任何其他查詢替換為查詢和過(guò)濾器部分。關(guān)于分組聚合查詢
#這個(gè)例子按狀態(tài)分組所有的帳戶,然后返回前10(默認(rèn))狀態(tài),按照count遞減排序(也是默認(rèn))GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyWord"      }    }  }}#與SQL語(yǔ)法相識(shí):SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC#注:設(shè)置size=0為不顯示搜索匹配。你可以不寫(xiě)size=0看看返回結(jié)果#下面示例計(jì)算按州(state)的平均帳戶余額(僅針對(duì)按降序排序的前10個(gè)州)GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyword"      },      "aggs": {        "average_balance": {          "avg": {            "field": "balance"          }        }      }    }  }}#注意我們?nèi)绾卧赼verage_balance聚合中嵌套group_by_state聚合。這是所有聚合的常見(jiàn)模式。您可以任意嵌套聚合中的聚合,以提取您需要從數(shù)據(jù)中獲得的透視摘要。基于之前的聚合,現(xiàn)在我們以降序?qū)ζ骄囝~進(jìn)行排序GET /bank/_search{  "size": 0,  "aggs": {    "group_by_state": {      "terms": {        "field": "state.keyword",        "order": {          "average_balance": "desc"        }      },      "aggs": {        "average_balance": {          "avg": {            "field": "balance"          }        }      }    }  }}#這個(gè)例子演示了我們?nèi)绾胃鶕?jù)年齡段(20-29,30-39和40-49),然后按性別分組,然后最終得到每個(gè)年齡段的每個(gè)性別的平均帳戶余額: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"              }            }          }        }      }    }  }}到這里我們會(huì)發(fā)現(xiàn)ElasticSearch的語(yǔ)法和SQL其實(shí)是異曲同工的。它因?yàn)楣δ軓?qiáng)大而簡(jiǎn)單,亦因?yàn)楣δ軓?qiáng)大而復(fù)雜。事實(shí)上我這幾篇關(guān)于Elasticsearch的筆記都是根據(jù)它的官網(wǎng)來(lái)的,自己并沒(méi)增加什么東西,因?yàn)楣俜轿臋n很清晰了,而且我也沒(méi)有刪減什么內(nèi)容,因?yàn)檫@些都是必要的。看過(guò)這些后,基本的增刪改查已經(jīng)沒(méi)什么問(wèn)題,算是上手了,那么后續(xù)將會(huì)看看它的理論基礎(chǔ)部份。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐城市| 英德市| 墨江| 赤城县| 太康县| 南皮县| 平乡县| 建始县| 永修县| 手机| 江门市| 高台县| 南通市| 稻城县| 盐山县| 清河县| 武鸣县| 惠水县| 伊宁县| 嫩江县| 罗源县| 东阳市| 郧西县| 玉山县| 南阳市| 泗阳县| 玉溪市| 凤城市| 灵寿县| 九江县| 田阳县| 沛县| 茂名市| 江川县| 海原县| 通辽市| 稷山县| 乐至县| 禄丰县| 内乡县| 台湾省|