文章目錄
1、做者有話說
本文爲了更加詳細的講解elasticsearch的操做,所有都是根據官網一點點進行說明。有興趣對官網進行閱讀的同窗,建議移步官網
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/getting-started-index.html
html
1.1 專業術語(必須進行掌握)
專業術語對學一箇中間件來講,是很是重要的,建議你們先了解如下的專業術語
https://blog.csdn.net/qq_34168515/article/details/108315484
程序員
本文只介紹幾個經常使用的術語正則表達式
1.1.1 索引 index
索引就像關係數據庫中的表。它具備一個包含type的 映射,該type包含索引中的字段。數據庫
注意:由於從6.x開始,就不推薦使用type是,可是爲了兼容如下版本,type統一爲 _doc編程
1.1.2 映射 mapping
映射就像關係數據庫中的架構定義。每一個 索引都有一個映射,該映射定義一個type,以及許多索引範圍的設置。api
注意:mapping一旦生成以後,就沒法進行修改了,除非從新創建一個新的索引,再拷貝過去數組
1.1.3 字段 field
一個文件包含字段或鍵-值對的列表。該值能夠是簡單(標量)值(例如,字符串,整數,日期),也能夠是嵌套結構(如數組或對象)。字段相似於關係數據庫中表中的列架構
1.1.4 術語 term
術語是在Elasticsearch中索引的精確值。該條款 foo,Foo,FOO是不等價的。可使用術語查詢來搜索術語(即精確值)。app
1.1.5 文本 text
文本(或全文)是普通的非結構化文本,例如本段。默認狀況下,文本將被分析爲 term,這是索引中實際存儲的內容。elasticsearch
文本字段須要在索引時進行分析才能做爲全文搜索,而且全文查詢中的關鍵字必須在搜索時進行分析以產生(和搜索)與索引時生成的詞相同的術語。
1.2 操做工具爲 elasticsearch head
界面
es head的下載方式,因爲篇幅問題,請自行百度!!!!!!
2、實際進行操做
參考官方 rest-api操做
https://www.elastic.co/guide/en/elasticsearch/reference/7.9/rest-apis.html
2.1 操做es的步驟
2.1 使用自動建立的形式建立index
es head操做
2.1.1 常規操做建立格式: POST 索引/_doc
POST can123/_doc { "user" : "kimchy", "createDate" : "2020-09-06 11:19:10", "message" : "trying out Elasticsearch" }
2.1.2 查看 建立的索引和數據
索引、索引對應的mapping,也就是數據庫格式,都建立好了,咱們查看一下
存在問題?因爲createTime字段,是須要date時間格式的,可是mapping映射倒是text格式,明顯是不對,後續介紹如何進行處理
查看存入的數據
爲了方便後續的測試,請添加多條數據
{"user":"dog","createDate":"2020-09-06 11:19:10","message":"four leg dog"} {"user":"cat","createDate":"2020-09-06 11:19:10","message":"four leg cat"} {"user":"frog","createDate":"2020-09-06 11:19:10","message":"four leg frog"} {"user":"pig","createDate":"2020-09-06 11:19:10","message":"four leg pig"} {"user":"duck","createDate":"2020-09-06 11:19:10","message":"two leg duck"} {"user":"chick","createDate":"2020-09-06 11:19:10","message":"chick leg chick"}
2.2 刪除index
添加
POST twitter/_doc/ { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }
2.2.1 刪除格式: DELETE /索引
DELETE /twitter/
3、從es head來看es的重要的搜索功能
3.1 查找某個文檔的所有內容 match_all
3.1.1 查看所有格式: POST 索引/_search
POST can123/_search
3.2 search的各類過濾
3.2.1 match 全文匹配
match和term的區別是,match查詢的時候,elasticsearch會根據你給定的字段提供合適的分析器,而term查詢不會有分析器分析的過程
查詢 message 包含關鍵字dog的文檔,ps: 注意和 term 的區別
查詢 message 包含 red dog的文檔,ps: 注意和 term 的區別
3.2.2 term 術語查詢
term是表明徹底匹配,即不進行分詞器分析,文檔中必須包含整個搜索的詞彙
查詢 message 包含關鍵字dog的文檔,ps: 注意和 match 的區別
查詢 message 包含 red dog的文檔,ps: 注意和 match 的區別
結論:
- match進行分詞器分析, 所謂的分詞,就是把當前的value進行分詞
- term是表明徹底匹配,即不進行分詞器分析
3.2.3 wildcard 通配符查詢
相似正則表達式,能夠對數據進行過濾查找
查找ck,若是正常的match是沒法查找到的
採用通配符查詢 *ck,就能夠查找到
3.2.4 prefix 前綴查詢
相似通配符查詢,查找以xxx開頭的關鍵字,參與倒排索引的每個詞查詢前綴
3.2.5 fuzzy 模糊查詢
在實際的搜索中,咱們有時候會打錯字,從而致使搜索不到。在Elasticsearch中,咱們可使用fuzziness屬性來進行模糊查詢,從而達到搜索有錯別字的情形。
match查詢具備「fuziness」屬性。它能夠被設置爲「0」, 「1」, 「2」或「auto」。「auto」是推薦的選項,它會根據查詢詞的長度定義距離。
錯別字模糊查詢:那麼它能夠顯示搜索的結果,這是由於咱們可以允許兩個編輯的錯誤。模糊性是拼寫錯誤的簡單解決方案,但具備很高的CPU開銷和很是低的精度。
例如match查找 chack 是沒法查詢到的
可是使用fuzzy查找 chack是能夠查找到 chick的
3.2.6 range 範圍查詢
範圍查詢,感受很是好理解,就是 lt 小於某個範圍, gt大於某個範圍。
3.2.7 query_string 查詢解析器
官方解釋:使用具備嚴格語法的解析器,根據提供的查詢字符串返回文檔。
該查詢使用語法根據操做符(如and或NOT)來解析和分割所提供的查詢字符串。而後,查詢在返回匹配的文檔以前獨立分析每一個分割文本。
可使用query_string查詢建立包含通配符的複雜搜索、跨多個字段的搜索等等。雖然通用,但查詢是嚴格的,若是查詢字符串包含任何無效語法,則返回錯誤。
能夠寫正則表達式,或者使用or and 等對查詢語句進行拼接,會更加靈活
同時查找 dog 和 cat
4、結尾
大部分的程序員,都是面向百度或者谷歌進行編程的,而網上的資料亂七八糟,有時候找起來讓人難受,因而本人無償進行資料收集的工做,大部分資料都是本人實打實收集的並且測試過,你們不用懷疑準確性,奈何能力有限,免於遺漏,但願讀者能夠在評論或者私信我,進行改正,你們一塊兒爲互聯網技術作貢獻。
========================
收集資料枯燥無味,若是本文對你有幫助,能夠點個贊,這個也是對我最大的鼓勵和讚許。
本人行不更名坐不改姓,潮汕的燦燦展
立志在互聯網這一行,作出本身的貢獻
========================