Elasticsearch 學習
阿新 • • 發佈:2020-08-07
ik 分詞器
先下載 ik 分詞器 放到Elasticsearch 的 plugins 的ik z中
- ik_max_word 最細粒度
- ik_smart 最小拆分
ik 分詞器配置
IKAnalyzer.cfg.xml 配置分詞規則
-
自定義自己分詞規則
-
新建 xx.dic 檔案
-
配置到IKAnalyzer.cfg.xml
<entry key="ext_dict">xx.dic</entry>
-
把自己的分詞規則放到 xx.dic 檔案中
-
索引基本操作
mothod | 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 {請求資料}
Elasticsearch 字元型別
- 字串型別 text keyword
- 數值型別 long integer short byte double float half float scaled
- 日期型別 date
- 布林值型別 boolen
- 二進位制型別 binary
- 等等...
指定型別
先新建索引
put /索引名稱/型別名/文件id {
"mapping":{
"properties":{
"欄位名稱":{
"type":"型別"
}
}
}
}
獲取資料資訊 Get
get 表/文旦 等
預設指定型別 _doc
_cat 它幫助開發者快速查詢Elasticsearch的相關資訊。
修改資料put/update (曾經) post(現在)
刪除 delete
例子 :PUT /test/vus/1
{
"name":"什麼說的好的",
"age":"20"
}
文件的基本操作
基本操作
查詢
GET /索引名稱/型別名稱/文件id(有沒有都可以)/_search?q=條件(如name:java)
結果裡面有個score 匹配度 就是匹配度越高分值越高
複雜操作
查詢 (排序 高亮 )
GET /索引名稱/型別名稱/文件id(有沒有都可以)/_search
{
"query":{
"match":{
條件(例如 "name":"java")
}
},
"_source":[要查詢的欄位(意思是篩選欄位)],
"sort":{
欄位(根據那個欄位排序):{
"order":"desc/aesc"
}
},
--分頁
"from":0, //從那條資料開始
"size":20 //一頁有幾條資料
}
根據score 那個更匹配
布林值查詢
GET /索引名稱/型別名稱/文件id(有沒有都可以)/_search
{
"query":{
"bool":{
"must"( 中有filter/must/must not /should):[
{
"match":
{
條件("name":"java")
},
"match":
{
條件("age":"20")
},
........
}
],
"filter"( 中有filter/must/must not /should):[
{
"range":
{
條件("age"):{
"gle":"", //大於等於多少gl是大於
"lte":"" //小於等於多少lt是小於
}
}
}
]
}
}
}
must 和sql 中 where 中and相同
should 和where中or相同
mast not 是不等於
匹配多個條件
GET /索引名稱/型別名稱/文件id(有沒有都可以)/_search
{
"query":{
"match":{
條件加空格(例如 "name":"java php" 這是隻要滿足一個條件就可以查出來)
}
}
}
精確查詢
-
term 查詢是直接通過倒排索引指定的詞條程序精確的查詢(直接查詢精確的值 查詢多個值的時候需要重新寫個term 不能直接加空格)
-
match 會使用分詞器解析(通過分析文件 然後在通過分析文件進行查詢)
兩個型別 text和keyword text可以用分詞器解析keyword 不會用分詞器解析
高亮查詢
GET /索引名稱/型別名稱/文件id(有沒有都可以)/_search
{
"query":{
"match":{
條件(例如 "name":"java")
}
},
"highlight":{ //高亮
"pre_tags":自定義標籤字首,(如"<B class="hah">")
"post_tags":自定義的字尾,(如 "</B>")
"fields":{
欄位:{} //高亮的欄位
}
}
}
搜尋的結果自動加上一個html標籤 或者自定義的標籤