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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

es--Restful API查询

發布時間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 es--Restful API查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Restful API查詢

  • 準備測試數據
  • 1、match_all
  • 2、match
  • 3、bool
  • 4、term
  • 5、range
  • 6、exists
  • 7、filter
  • 8、淺分頁
  • 9、深分頁

準備測試數據

POST /school/student/_bulk { "index": { "_id": 1 }} { "name" : "liubei", "age" : 20 , "sex": "boy", "birth": "1996-01-02" , "about": "i like diaocan he girl" } { "index": { "_id": 2 }} { "name" : "guanyu", "age" : 21 , "sex": "boy", "birth": "1995-01-02" , "about": "i like diaocan" } { "index": { "_id": 3 }} { "name" : "zhangfei", "age" : 18 , "sex": "boy", "birth": "1998-01-02" , "about": "i like travel" } { "index": { "_id": 4 }} { "name" : "diaocan", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and sport" } { "index": { "_id": 5 }} { "name" : "panjinlian", "age" : 25 , "sex": "girl", "birth": "1991-01-02" , "about": "i like travel and wusong" } { "index": { "_id": 6 }} { "name" : "caocao", "age" : 30 , "sex": "boy", "birth": "1988-01-02" , "about": "i like xiaoqiao" } { "index": { "_id": 7 }} { "name" : "zhaoyun", "age" : 31 , "sex": "boy", "birth": "1997-01-02" , "about": "i like travel and music" } { "index": { "_id": 8 }} { "name" : "xiaoqiao", "age" : 18 , "sex": "girl", "birth": "1998-01-02" , "about": "i like caocao" } { "index": { "_id": 9 }} { "name" : "daqiao", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" } { "index": { "_id": 10 }} { "name" : "luban", "age" : 21 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" } { "index": { "_id": 11 }} { "name" : "guiguzi", "age" : 29 , "sex": "girl", "birth": "1996-01-02" , "about": "i like football" } { "index": { "_id": 12 }} { "name" : "zhuangzhou", "age" : 40 , "sex": "girl", "birth": "1996-01-02" , "about": "i like history" }
  • ES中兩種查詢方式
    • GET:指定documentId來查詢
      • 只能查詢這一條documentId的數據
      • 類似于Hbase中的get
    • GET:指定_search,通過構建查詢器Query來做復雜的條件查詢
      • 類似于Hbase中scan

1、match_all

  • 查詢:匹配所有查詢
    • 默認只顯示10條
GET /school/student/_search?pretty {"query": {"match_all": {}} }
  • 指定條數
GET /school/student/_search?pretty {"query": {"match_all": {}},"size":12 }

2、match

  • 模糊匹配查詢:ES中默認的排序規則:按照評分降序排序
GET /school/student/_search?pretty {"query": {"match": {"about": "travel"}} } ? {"took": 56,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 6,"max_score": 0.8538154, --所有符合條件的數據中最高評分"hits": [{"_index": "school","_type": "student","_id": "4","_score": 0.8538154,"_source": {"name": "diaocan","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and sport"}},{"_index": "school","_type": "student","_id": "7","_score": 0.6931472,"_source": {"name": "zhaoyun","age": 31,"sex": "boy","birth": "1997-01-02","about": "i like travel and music"}},{"_index": "school","_type": "student","_id": "3","_score": 0.6931472,"_source": {"name": "zhangfei","age": 18,"sex": "boy","birth": "1998-01-02","about": "i like travel"}},{"_index": "school","_type": "student","_id": "5","_score": 0.5000329,"_source": {"name": "panjinlian","age": 25,"sex": "girl","birth": "1991-01-02","about": "i like travel and wusong"}},{"_index": "school","_type": "student","_id": "9","_score": 0.5000329,"_source": {"name": "daqiao","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}},{"_index": "school","_type": "student","_id": "10","_score": 0.5000329,"_source": {"name": "luban","age": 21,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}}]} }

3、bool

  • 多條件查詢:條件之間的邏輯關系
    • must:必須滿足的條件
    • must_not:必須不能滿足的條件
    • should:應該,可有可無,或者
  • 測試
  • 查詢所有喜歡旅游但性別不是男性的
GET /school/student/_search?pretty { "query": {"bool": {"must": { "match": {"about": "travel"}},"must_not": {"match": {"sex": "boy"}}}} }
  • 查詢所有喜歡旅游的,如果有男的也可以
GET /school/student/_search?pretty { "query": {"bool": {"must": { "match": {"about": "travel"}},"should": {"match": {"sex": "boy"}} }} }

4、term

  • 詞條查詢【重要】,精準匹配
GET /school/student/_search?pretty { "query": {"bool": {"must": { "term": {"about": "travel"}},"should": {"term": {"sex": "boy"}} }} }
  • terms:多個詞匹配
GET /school/student/_search?pretty { "query": {"bool": {"must": { "terms": {"about": ["travel","history"]}} }} } about": ["travel","history"]:值是或者關系

5、range

  • 范圍查詢
GET /school/student/_search?pretty { "query": {"range": {"age": {"gt":20,"lte":25}}} }
  • bool多條件嵌套
GET /school/student/_search?pretty {"query": {"bool": {"must": [{"term": {"about": {"value": "travel"}}},{"range": {"age": {"gte": 20,"lte": 30}}}]}} }

6、exists

  • 判斷是否存在
GET /school/student/_search?pretty { "query": {"exists": {"field": "age" }} }

7、filter

  • 過濾查詢
GET /school/student/_search?pretty {"query": {"bool": {"must": {"match": {"about": "travel"}}, "filter": [{"term":{"age": 20}}]}} }

8、淺分頁

  • 類似于limit M,N
    • M:從第幾條開始,M從0開始計數
    • N:顯示幾條
  • 需要給定的條件
    • 起始位置:從0開始
    • 頁面大小
  • 分頁查詢
GET /school/_search?pretty {"from" : 0 , "size" : 3 } ? GET /school/_search?pretty {"from" : 3 , "size" : 3 }
  • 從0開始一直掃描到起始位置,然后顯示size的數據
  • 每次只返回一頁
  • 工作中不推薦使用淺分頁
  • 原理是對每個分片都查詢N條,然后再合并根據評分排序取最后的N條
  • 如果你的from的位置比較大,性能非常差
    • from:10000 size:10
    • index
      • shard0:from:10000 size:10
      • shard1:from:10000 size:10
      • shard2:from:10000 size:10
      • shard3:from:10000 size:10
      • shard4:from:10000 size:10
      • |
      • 返回50條,根據評分排序,取前10條

9、深分頁

  • 自動翻頁
  • 不建議將結果在內存中緩存太長時間
  • 初始化:將需要的數據從文件中放到內存中
GET school/_search?scroll=3m {"query": {"match_all": {}},"size": 3 } ?scroll=3m : 將查詢的結果在內存中緩存3分鐘
  • 分頁查詢:從內存中查詢,指定緩存的id
GET /_search/scroll {"scroll" : "1m","scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAOOFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADhhZsS2w3bUk0YlJDT3o4eGlJRjlkN3B3AAAAAAAAA48WMTZnZlVnUHVSb1MyOGZ4TVZUcjlLUQAAAAAAAAORFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADkBYxNmdmVWdQdVJvUzI4ZnhNVlRyOUtR" }
  • 不建議處理特別大的數據量,建議通過范圍來控制頁面的數據,做數據過濾

總結

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

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