1.ES集成ik分詞器java
lucene因爲是jar工具包,若是要在使用lucene的環境下使用ik分詞器,只需導入對應jar,作一些配置就行.git
以插件的方式集成ES服務器,客戶端只需告訴咱們某個字段要用這個分詞器就好了。github
步驟:數組
①服務端安裝ik插件服務器
②客戶端端指定字段用插件app
安裝:elasticsearch
1)下載源碼:https://github.com/medcl/elasticsearch-analysis-ikmaven
2)maven打包:mvn package工具
3)安裝到es服務器測試
解壓到es/plugins
4)配置
5)重啓
測試:
#測試ik分詞器 POST _analyze { "analyzer":"ik_smart", "text":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首" }
2.類型文檔映射
ES的文檔映射(mapping)機制用於進行字段類型或分詞器確認,將每一個字段匹配爲一種肯定的數據類型。-就至關於在設計表的時候爲字段指定類型.
ES支持的數據類型:
① 基本字段類型 字符串:text(分詞),keyword(不分詞) StringField(不分詞文本),TextFiled(要分詞文本) text默認爲全文文本,keyword默認爲非全文文本 數字:long,integer,short,double,float 日期:date 邏輯:boolean ② 複雜數據類型 對象類型:object 數組類型:array 地理位置:geo_point,geo_shape
①默認映射
ES在沒有配置Mapping的狀況下新增文檔,ES會嘗試對字段類型進行猜想,並動態生成字段和類型的映射關係。
②自定義映射
type |
類型:基本數據類型,integer,long,date,boolean,keyword,text... |
enable |
是否啓用:默認爲true。 false:不能索引、不能搜索過濾,僅在_source中存儲 頭像路徑 |
boost |
權重提高倍數:用於查詢時加權計算最終的得分。 |
format |
格式:通常用於指定日期格式,如 yyyy-MM-dd HH:mm:ss.SSS |
ignore_above |
長度限制:長度大於該值的字符串將不會被索引和存儲。 |
ignore_malformed |
轉換錯誤忽略:true表明當格式轉換錯誤時,忽略該值,被忽略後不會被存儲和索引。 |
include_in_all |
是否將該字段值組合到_all中。 |
null_value |
默認控制替換值。如空字符串替換爲」NULL」,空數字替換爲-1 |
store |
是否存儲:默認爲false。true意義不大,由於_source中已有數據 |
index |
索引模式:analyzed (索引並分詞,text默認模式), not_analyzed (索引不分詞,keyword默認模式),no(不索引) |
analyzer |
索引分詞器:索引建立時使用的分詞器,如ik_smart,ik_max_word,standard |
search_analyzer |
搜索分詞器:搜索該字段的值時,傳入的查詢內容的分詞器。 |
fields |
多字段索引:當對該字段須要使用多種索引模式時使用。 如:城市搜索New York "city": { "type": "text", "analyzer": "ik_smart", "fields": { "raw": { "type": "keyword" } } } city分詞 city.raw 不分詞 那麼之後搜索過濾和排序就可使用city.raw字段名 |
注意:若是已經有數據,不能直接作映射,先刪除掉,在添加映射,再添加數據.
③全局映射
默認映射-->全局映射->自定義映射
④優秀實踐
步驟1: