ElasticSearch學習(二)——ik分詞及查詢操作
IK分詞器外掛
分詞:即把一段中文或者別的劃分成一個個的關鍵字,在搜尋時將自己的資訊進行分詞,會把資料庫中或者索引庫中的資料進行分詞,然後進行一個匹配操作,預設的中文分詞是將每個詞看成一個詞,如“李小狼”會被分為“李”,“小”“狼”,這顯然是不符合要求的,我們需要安裝中文分詞器ik來解決這個問題。
IK提供了兩個分詞演算法:ik_smart和ik_max_word,其中ik_smart為最少切分,ik
_max_word為最細力度劃分。
下載地址:https://github.com/medcl/elasticsearch-analysis-ik.
下載完成後在es的plugins目錄下新建一個資料夾ik將解壓後的檔案放置到裡面
重啟es
開啟kibana進行測試
對少年先鋒隊進行分詞解析
使用最小顆粒切分情況如下(窮盡所有可能)(根據字典來)
字典配置
新增自己的字典項,具體格式可以參考檔案中其他dic檔案格式,注意編碼格式修改後儲存需重新啟動es
Restful風格命令
基本rest命令說明,關於索引的基本操作
method | url地址 | 說明 |
---|---|---|
PUT | localhost:9200/索引名稱/型別名稱/文件id | 建立文件(指定文件id) |
POST | localhost:9200/索引名稱/型別名稱 | 建立文件(隨機文件id) |
POST | localhost:9200/索引名稱/型別名稱/文件id/_update | 修改文件 |
DELETE | localhost:9200/索引名稱/型別名稱/文件id | 刪除文件 |
GET | localhost:9200/索引名稱/型別名稱/文件id | 查詢文件通過文件id |
POST | localhost:9200/索引名稱/型別名稱/_search | 查詢所有資料 |
基礎測試:先新建一個索引
使用put指定文件id方式
PUT /索引名/型別/id
{請求體}
在head中檢視相關資訊,發現相關索引已被建立,資料也在
也可以直接只建立索引,並賦予對應索引相關屬性,詳細屬性設定可以自行去官網查詢,如此處建立一個test2的索引
同理,可以通過GET命令檢視對應資訊(索引或者具體文件的)
額外命令:
GET _cat/indices?v 可以檢視一些es中的預設配置
修改的話可以使用PUT命令不帶update的,但要注意這種情況下如果請求體中的資料有遺漏則更新後的資料該值也不存在,即若修改年齡,請求體put中沒有name則最終結果中name將遺失,推薦使用put 。。/_update命令對其進行修改
關於文件的基本操作
在說查詢前我們先造幾條資料用來備用:
- PUT 插入資料
- GET獲取資料
- 更新資料PUT
注意修改資料後,資料的version號改變 - POST _update更新資料
簡單的查詢
q即為query,當然若為模糊匹配也是可以查到的
注意查出來的結果當中有一項score的數值,該項為結果與查詢條件的匹配程度,分數越高則匹配度越高
複雜查詢
再插入一條資料以供測試
查詢條件在請求體中書寫,如精確匹配match(此處的精確匹配指的是欄位,如name欄位中帶有李的資料)
讓結果顯示指定欄位_source
排序操作,使用sort引數,order指定升序還是降序
分頁操作,from(從第幾條資料開始),size引數(返回多少條資料)
布林值查詢
must,多條件查詢,相當於sql語句where中的and
同樣的有and就肯定有or,在es中or為should
此時就查出來兩條資料了
查詢name不是李小狼的使用must_not
對查詢到的資料進行過濾,filter,如範圍查詢為
精確查詢!term
term查詢是直接通過倒排索引指定的詞條程序精確查詢的!
- term:直接查詢精確的
- match:會使用分詞器解析(先分析文件,然後通過分析的文件進行查詢)
使用方法和match類似就不再演示
高亮查詢
highlight