<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
# 1 排序 GET jeff/doc/_search { "query": { "match": { "from": "gu" } }, "sort": [ { "age": { "order": "desc" } } ] } # 升序 GET jeff/doc/_search { "query": { "match": { "from": "gu" } }, "sort": [ { "age": { "order": "asc" } } ] } # 並不是所有型別都支援排序(只允許數位型別做排序) GET jeff/doc/_search { "query": { "match": { "from": "gu" } }, "sort": [ { "name": { "order": "asc" } } ] }
# match和match_all的區別? mach表示要查詢,根據欄位查,match_all查所有 GET jeff/doc/_search { "query": { "match_all": {} } }
GET jeff/doc/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ], "from": 2, "size": 1 } # "from": 2,代表從第二條開始, 取一條"size": 1 # 有了這個查詢,如何分頁? 一頁有10條資料 第一頁: "from": 0, "size": 10 第二頁: "from": 10, "size": 10 第三頁: "from": 20, "size": 10
# 多個條件,and ,or ,not # 對到es中就是布林查詢,must,should,must_not,filter must --- and should --- or must_not --- not filter --- 過濾 # 1 組合查詢之must # 查詢form gu和age=30的資料 GET gyy/doc/_search { "query": { "bool": { "must": [ { "match": { "from": "gu" } }, { "match": { "age": "30" } } ] } } } # 查詢form gu資料() GET gyy/doc/_search { "query": { "bool": { "must": [ { "match": { "from": "gu" } } ] } } } # 同上 GET gyy/doc/_search { "query": { "match": { "from": "gu" } } } # 2 組合查詢之should,或者的條件 GET gyy/doc/_search { "query": { "bool": { "should": [ { "match": { "from": "gu" } }, { "match": { "tags": "閉月" } } ] } } } # 3 組合查詢之must_not 取反 GET gyy/doc/_search { "query": { "bool": { "must_not": [ { "match": { "from": "gu" } }, { "match": { "tags": "可愛" } }, { "match": { "age": 18 } } ] } } } # `filter`條件過濾查詢,過濾條件的範圍用`range`表示,`gt`表示大於,大於多少呢 # gt:大於 lt:小於 get:大於等於 let:小於等於 GET gyy/doc/_search { "query": { "bool": { "must": [ { "match": { "from": "gu" } } ], "filter": { "range": { "age": { "gt": 25 } } } } } } # 查詢年齡小於等於18的所有資料 GET gyy/doc/_search { "query": { "bool": { "filter": { "range": { "age": { "lte": 18 } } } } } }
# 對結果進行過濾,類似於如下 select * from user; select name,age from user; # 對應到es的查詢 GET gyy/doc/_search { "query": { "match": { "name": "顧老二" } }, "_source": ["name", "age"] }
# 3 結果高亮顯示(預設情況) GET gyy/doc/_search { "query": { "match": { "name": "石頭" } }, "highlight": { "fields": { "name": {} } } } # 客製化高亮顯示的樣式 GET gyy/chengyuan/_search { "query": { "match": { "from": "gu" } }, "highlight": { "pre_tags": "<b class='key' style='color:red'>", "post_tags": "</b>", "fields": { "from": {} } } }
小結:
混合開發,你知道怎麼處理
前後端分離,你怎麼處理?
<b class='key' style='color:red'>串直接以josn格式返回,前端自行渲染
用的最多就是match+布林+高亮+分頁
# 聚合查詢 # 1 聚合查詢之avg select max(age) as my_avg from user; GET gyy/doc/_search { "query": { "match": { "from": "gu" } }, "aggs": { "my_avg": { "avg": { "field": "age" } } }, "_source": ["name", "age"] } # 2 聚合查詢之max,size=0表示不取資料,只要max的結果 GET gyy/doc/_search { "query": { "match": { "from": "gu" } }, "aggs": { "my_max": { "max": { "field": "age" } } }, "size": 0 } # 3 聚合之min GET gyy/doc/_search { "query": { "match": { "from": "gu" } }, "aggs": { "my_min": { "min": { "field": "age" } } }, "size": 0 } # 4 聚合查詢之sum GET gyy/doc/_search { "query": { "match": { "from": "gu" } }, "aggs": { "my_sum": { "sum": { "field": "age" } } }, "size": 0 } # 5 聚合之分組 GET gyy/doc/_search { "size": 0, "query": { "match_all": {} }, "aggs": { "age_group": { "range": { "field": "age", "ranges": [ { "from": 15, "to": 20 }, { "from": 20, "to": 25 }, { "from": 25, "to": 30 } ] } } } }
GET _template/user_instagram # 檢視模版 PUT _template/user_instagram # 修改模版 {跟欄位資訊資料} GET user_instagram/_mapping # 檢視索引資訊 PUT user_instagram/_mapping # 修改索引資訊 {跟欄位資訊資料}
模版中如果有name欄位,存的時候會在索引中自動匹配
模版中如果沒有age欄位,存的時候索引找不到欄位,存不進去。
需要現在模版中新增欄位,再到索引中新增欄位,索引生成之後需要手動新增欄位,不會自動生成
# 檢視索引資訊---》mapping字典---》對映(型別,表型別,表結構) GET user_instagram/_mapping # 6.x以後一個索引只能有一個對映型別(只能有一個表) # 建立對映 # 建立索引,並設定對映 PUT _template/user_instagram { "order" : 1, "index_patterns" : [ "user_instagram-v1_0" ], "settings" : { "index" : { "default_pipeline" : "auto_timestamp_pipeline", "mapping" : { "total_fields" : { "limit" : "10000" } }, "refresh_interval" : "600s", "number_of_shards" : "8", "number_of_replicas" : "0", "max_inner_result_window" : "50000" } }, "mappings" : { "_meta" : { "software_version_mapping" : "1.0" }, "dynamic" : "strict", "properties" : { "is_private" : { "type" : "boolean" }, "full_name" : { "type" : "text" }, "create_time" : { "type" : "date" }, "avatar_url" : { "type" : "text" }, "user_id" : { "eager_global_ordinals" : true, "type" : "keyword" }, "follower_num" : { "type" : "integer" }, "following_num" : { "type" : "integer" }, "post_count" : { "type" : "integer" }, "nickname" : { "type" : "text", "fields" : { "keyword" : { "ignore_above" : 256, "type" : "keyword" } }, "doc_values" : false }, "requested_by_viewer" : { "type" : "boolean" }, "is_verified" : { "type" : "boolean" }, "followed_by_viewer" : { "type" : "boolean" } } }, "aliases" : { "user_instagram" : { } } } # 插入測試資料 PUT books/_doc/1 { "title":"大頭兒子小偷爸爸", "price":100, "addr":"北京天安門", "company":{ "name":"我愛北京天安門", "company_addr":"我的家在東北松花江傻姑娘", "employee_count":10 }, "publish_date":"2019-08-19" } PUT books/_doc/2 { "title":"白雪公主和十個小矮人", "price":"99", "addr":"黑暗森裡", "company":{ "name":"我的家鄉在上海", "company_addr":"朋友一生一起走", "employee_count":10 }, "publish_date":"2018-05-19" } PUT books/_doc/3 { "title":"白雪公主和十個小矮人", "price":"99", "addr":"黑暗森裡", "age":18 } # 檢視對映 GET books GET books/_mapping
對映是什麼?對映有什麼用? 規定了表結構(不是強制的),規定了哪個欄位是可以用來全文檢索,是否是數位型別,布林型別
mapping型別一旦確定,以後就不能修改了,但是可以插入欄位
# 全文檢索,有了對映,決定了我可以對某個欄位做全文檢索 # es預設分詞對英文友好,使用中文分詞器(es的外掛),ik(作者,中國人,elasticsearch開源社群負責人) # 是es的一個外掛(es如何安裝外掛) #第一種:命令列(內建外掛) bin/elasticsearch-plugin install analysis-smartcn 安裝中文分詞器 #第二種:url安裝(第三方外掛) bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.0/elasticsearch-analysis-ik-7.5.0.zip #第三種:手動安裝(推薦用) #下載,解壓到es的plugins路徑下,重啟es即可 #注意:ik分詞器跟es版本一定要對應 # 兩種分詞方式 # ik_smart:分詞分的 # ik_max_word :分詞分的多 # ik_smart分的詞少,粒度大 GET _analyze { "analyzer": "ik_smart", "text": "上海自來水來自海上" } # ik_smart分的詞多,粒度小 GET _analyze { "analyzer": "ik_max_word", "text": "上海自來水來自海上" } # 在建立對映的時候設定 # 以後你的操作: #文章標題:ik_max_word #文章內容:ik_smart #摘要 #作者 #建立時間
# match:我們今天出去玩 ----》分詞---》按分詞去搜 #term:我們今天出去玩---》直接拿著[我們今天出去玩]--->去索引中查詢 # 查不到內容,直接拿著 Python爬蟲 去查,因為沒有索引,所以查不到 GET books/_search { "query":{ "term":{ "title":"Python爬蟲" } } } # 能查到,而且帶python的都查出來了 # Python 爬蟲 分了詞,分別拿著這兩個詞去查,帶python關鍵字,帶爬蟲關鍵字都能查到 GET books/_search { "query":{ "match":{ "title":"Python爬蟲" } } }
以上就是Elasticsearch聚合查詢及排序操作範例的詳細內容,更多關於Elasticsearch聚合查詢及排序的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45