elasticsearch的分析器實際上是將三個功能封裝在一起,這三個功能按照順序執行,而這三個功能都是能自定義的
字元過濾器 (char_filter
)
首先,字串按順序通過每個字元過濾器,他們的任務是在分詞前整理字串,
乙個字元過濾器可以用來去掉html
,或者將&
轉化成and
。
分詞器 (tokenizer
)
其次,字串被分詞器分為單個的詞條,乙個簡單的分詞器遇到空格和標點的時候,可能會將文字拆分成詞條。
hello how are you?
會被es預設的分詞器standard
分成hello
、how
、are
、you
token 過濾器 (filter
)
最後,詞條按順序通過每個token
過濾器,這個過程可能會改變詞條(quick -> quick
)、刪除詞條(a、an、and、the.
…)、增加詞條(jump
和leap
這種同義詞)
格式:
put 127.0
.0.1
:9200
/mytest
,"tokenizer":,
"filter":,
"analyzer":}
}}
具體例項:
put 127.0
.0.1
:9200
/mytest
,"***":,
"yyy":}
,"filter":}
,"analyzer":}
}},:
}}}}
分析器主要有兩種情況會被使用,一種是插入文件時,將text
型別的字段做分詞然後插入倒排索引,第二種就是在查詢時,先對要查詢的text
型別的輸入做分詞,再去倒排索引搜尋
如果想要讓 索引 和 查詢 時使用不同的分詞器,elasticsearch也是能支援的,只需要在字段上加上search_analyzer
引數
在索引時,只會去看字段有沒有定義analyzer
,有定義的話就用定義的,沒定義就用es預設的
在查詢時,會先去看字段有沒有定義search_analyzer
,如果沒有定義,就去看有沒有analyzer
,再沒有定義,才會去使用es預設的
具體例項:
put 127.0
.0.1
:9200
/mytest
,"name":}
}}}
Elasticsearch 自定義多個分析器
1.1分析器 analyzer elasticsearch 無論是內建分析器還是自定義分析器,都由三部分組成 字元過濾器 character filters 分詞器 tokenizer 詞元過濾器 token filters 1.2 分析器analyzer工作流程 input text charac...
elasticsearch配置詳解
elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...
誰在使用Elasticsearch
github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...