Eelasticsearch 多字段特性及 Mapping 中配置自定義 Analyzer詳解
時間 2021-05-20
標籤
elk
elasticsearch
多字段特性
1.廠家名字實現精確匹配
2.使用不同的 analyzer
- 不同語言
- pinyin 字段的搜索
- 還支持爲搜索和索引指定不同的 analyzer
Excat values v.s Full Text
- Excat Values :包括數字 / 日期 / 具體一個字符串 (例如 「Apple Store」)
Elasticsearch 中的 keyword
- 全文本,非結構化的文本數據
Elasticsearch 中的 text
Excat values不需要分詞
Elaticsearch 爲每一個字段創建一個倒排索引
Exact Value 在索引時,不需要做特殊的分詞處理
自定義分詞
當 Elasticsearch 自帶的分詞器無法滿足時,可以自定義分詞器。通過自組合不同的組件實現:
- Character Filter
- Tokenizer
- Token Filter
Character Filters
在 Tokenizer
之前對文本進行處理,例如增加刪除及替換字符。可以配置多個 Character Filters
。會影響 Tokenizer 的 position 和 offset 信息
一些自帶的 Character Filters:
HTML strip
- 去除 html 標籤
Mapping
- 字符串替換
Pattern replace
- 正則匹配替換
Tokenizer
- 將原始的文本按照一定的規則,切分爲詞(term or token)
- Elasticsearch 內置的 Tokenizers:
whitespace
| standard
| uax_url_email
| pattern
| keyword
| path hierarchy
- 可以用 JAVA 開發插件,實現自己的 Tokenizer
Token Filters
- 將 Tokenizer 輸出的單詞,進行增加、修改、刪除
- 自帶的 Token Filters:
Lowercase
|stop
| synonym
(添加近義詞)