日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch英文基本查询

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch英文基本查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章內容概述

1、基本查詢(QUERY查詢) 2、結構化查詢

1、基本查詢(QUERY查詢)

1.1 數據準備

先插入數據,以備測試使用 ### 創建索引 PUT /lib3PUT /lib3/user/1 {"name":"zhaoliu","address":"hei long jiang tie ling shi","age":50,"birthday":"1970-12-12","interests":"hejiu,duanlian,lvyou" }PUT /lib3/user/2 {"name":"zhaoming","address":"bei jing shi hai dian qu","age":20,"birthday":"1998-10-12","interests":"hejiu,changge,wanyouxi" }PUT /lib3/user/3 {"name":"lisi","address":"bei jing shi chao yang qu","age":28,"birthday":"1990-01-11","interests":"biancheng,shuijiao,wanyouxi" }PUT /lib3/user/4 {"name":"wangwu","address":"bei jing shi fang shan qu","age":26,"birthday":"1993-01-11","interests":"changge,tingyinyue,wanyouxi" }PUT /lib3/user/5 {"name":"zhangsan","address":"zheng zhou shi er qi qu","age":32,"birthday":"1988-05-11","interests":"tiaowu,tingyinyue" }

1.2 基本條件查詢

根據id進行查詢 GET /lib3/user/id值[比如7]

查詢當前所有類型的文檔 GET /lib3/user/_search

根據多個ID批量查詢 GET /lib3/user/_mget{"ids":["3","5"]}

根據姓名查詢GET /lib3/user/_search?q=name:li siGET /lib3/user/_search?q=interests:跳舞 查詢不到內容根據年齡查詢:查詢年齡21GET /lib3/user/_search?q=age:21

根據年齡區間查詢:查詢年齡30歲-60歲之間GET /lib3/user/_search?q=age[30 TO 60]注意:TO 一定要大寫

根據年齡區間查詢,并且降序排列:查詢年齡30歲-60歲之間 并且年齡降序GET /lib3/user/_search?q=age[30 TO 60]&sort=age:desc

1.3 控制查詢返回數量

根據年齡區間查詢,降序排列并展示指定數據[分頁]:查詢年齡30歲-60歲之間 并且年齡降序、從0開始,顯示2條數據GET /lib3/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1

根據年齡區間查詢,降序排列并展示指定數據[分頁],展示直接列:查詢年齡30歲-60歲之間 并且年齡降序、從0開始,顯示2條數據, 展示name和age字段GET /lib3/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=2&_source=name,age

2、結構化查詢

ES中的查詢請求有兩種方式,一種是簡易版的查詢,另外一種是使用JSON完整的請求體,叫做結構化查詢(DSL)。由于DSL查詢更為直觀也更為簡易,所以大都使用這種方式。DSL查詢是POST過去一個json,由于post的請求是json格式的,所以存在很多靈活性,也有很多形式。

2.1 查詢案例

2.1.1 term查詢

term query 會去倒排索引中尋找確切的term,不進行分詞器分析,文檔中必須包含整個搜索的詞匯,這種查詢適合keyword,mumeric date等。1、根據名稱精確查詢姓名 GET /lib3/user/_search {"query": {"term": {"name": "li si"}} } "query":{} 定義查詢條件"term":{} 定義精確查詢"name": "li si" 定義精確查詢的字段和對應值2、根據愛好查詢 GET /lib3/user/_search {"query":{"term":{"interests":"changge"}} }

2.1.2 terms查詢

terms: 查詢某個字段中含有多個關鍵詞的文檔1、查詢愛好包含hejiu 或 changge的 GET /lib3/user/_search {"query":{"terms":{"interests":["changge","hejiu"]}} } 只要包含關鍵詞的一個,都會被查詢出來

2.1.3 match模糊查詢

match query 知道分詞器的存在,會對字段進行分詞操作,然后再查詢1、根據名稱模糊查詢 GET /lib3/user/_search {"query": {"match": {"name": "zhaoming zhaoliu"}} } "match":{} 定義模糊查詢,類似于likematch查詢相當于模糊匹配,只包含其中一部分關鍵詞就行2、多條件模糊查詢 multi_match GET /lib3/user/_search {"query": {"multi_match": {"query": "changge","fields": ["interests","name"]}} } "query" 后面是跟要查詢的內容"fields" 要查詢的字段

2.1.4 結構化分頁查詢

1、分頁查詢 GET /lib3/user/_search {"from": 0,"size": 2, "query": {"match": {"interests": "changge"}}} "from" 開始下標"size" 數量注:類似于limit限定查詢

2.1.5 控制顯示字段

我們之前的查詢是把所有的字段都顯示出來,我們可以通過_source來控制要顯示的字段: GET /lib3/user/_search {"_source":["name","interests"],"query":{"match":{"interests":"changge"}} } 也可以通過includes和excludes來實現: GET /lib3/user/_search {"_source":{"includes": ["name","interests"],"excludes": ["birthday","age"]},"query":{"match":{"interests":"changge"}} } 也可以使用通配符來匹配指定的字段: GET /lib3/user/_search {"_source":{"includes": "a*", "excludes": ["name","birthday"]},"query":{"match":{"interests":"changge"}} }

2.1.6 排序

使用sort實現排序, desc 降序 asc 升序 GET /lib3/user/_search {"sort": [{"age": {"order": "asc"}}]}

2.1.7 前綴匹配

匹配以指定前綴開始的字段 GET /lib3/user/_search {"query": {"match_phrase_prefix": {"name": "zhao"}} }

2.1.8 范圍查詢

根據生日范圍查詢 GET /lib3/user/_search {"query": {"range": {"birthday": {"gte": "1990-10-10","lte": "2018-05-01"}}} } 當然,也有人喜歡使用from to GET /lib3/user/_search {"query": {"range": {"birthday": {"from": "1990-10-10","to": "2018-05-01"}}} } 我們可以設置是否包含最大或最小 GET /lib3/user/_search {"query": {"range": {"age": {"gte": 20,"lte": 32,"include_lower":true,"include_upper":false}}} } gt 相當于 >lt 相當于 <gte 相當于 >=lte 相當于 <=

2.1.9 wildcard查詢

允許使用通配符*和?來進行查詢* 代表0個或多個字符? 代表任意一個字符查詢姓名以zhao開頭后面任意的 GET /lib3/user/_search {"query": {"wildcard": {"name": "zhao*"}} } 查詢前面是li第三個字符任意,第四個字符是i的 GET /lib3/user/_search {"query": {"wildcard": {"name": "li?i*"}} }

2.1.10 fuzzy實現模糊查詢

當我們對于字段值不太記得時,我們可以通過fuzzy進行大致查詢,找到對應匹配的值 GET /lib3/user/_search {"query": {"fuzzy": {"name": "zholiu"}} }GET /lib3/user/_search {"query": {"fuzzy": {"interests": {"value":"change"}}} }

2.1.11 高亮搜索結果

GET /lib3/user/_search {"query":{"match":{"interests":"changge"}},"highlight": {"fields": {"interests": {}}} } 更多Kibana查詢請參考: http://www.mamicode.com/info-detail-2107610.html

2.2 term與match區別

term查詢不會對字段進行分詞查詢,會采用精確匹配。match會根據該字段的分詞器,進行分詞查詢。

ib3/user/_search
{
“query”: {
“fuzzy”: {
“interests”: {
“value”:“change”
}
}
}
}

### 2.1.11 高亮搜索結果

GET /lib3/user/_search
{
“query”:{
“match”:{
“interests”:“changge”
}
},
“highlight”: {
“fields”: {
“interests”: {}
}
}
}

更多Kibana查詢請參考: http://www.mamicode.com/info-detail-2107610.html## 2.2 term與match區別term查詢不會對字段進行分詞查詢,會采用精確匹配。match會根據該字段的分詞器,進行分詞查詢。

總結

以上是生活随笔為你收集整理的ElasticSearch英文基本查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。