2020.9.2课堂笔记(ES分词器analysis-ik,Logstash)

  1. 分词器
    (1) 概念:
    (2) 干啥的:
    ① 切词
    ② normalization(提升recall召回率:能搜索到的结果的比率)
    (3) 分析器:
    ① character filter(mapping):分词之前预处理(过滤无用字符、标签等,转换一些&=>and 《Elasticsearch》=> Elasticsearch
  1. HTML Strip Character Filter:html_strip
    a. 参数:escaped_tags 需要保留的html标签
  2. Mapping Character Filter:type mapping
  3. Pattern Replace Character Filter:type pattern_replace
    ② tokenizer(分词器):分词
    ③ token filter:停用词、时态转换、大小写转换、同义词转换、语气词处理等。比如:has=>have him=>he apples=>apple the/oh/a=>干掉
    (4) ES内置分词器 7.6 15种 自带分词器
    ① standard analyzer:默认分词器,中文支持的不理想,会逐字拆分。
  4. max_token_length:最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。
    ② Pattern Tokenizer:以正则匹配分隔符,把文本拆分成若干词项。
    ③ Simple Pattern Tokenizer:以正则匹配词项,速度比Pattern Tokenizer快。
    ④ whitespace analyzer:以空白符分隔 Tim_cookie
    测试:Tim_cookie received his girlfriend on 2020-05-20
    (5) 自定义分词器:
    ① tokenizer:内置或自定义分词器。(需要)
    ② char_filter:内置或自定义字符过滤器 。
    ③ filter:内置或自定义token filter 。
    ④ position_increment_gap:在为文本值数组建立索引时,Elasticsearch在一个值的最后一项和下一个值的第一项之间插入一个假的“空白”,以确保词组查询与来自不同数组元素的两项不匹配。默认为100。查看position_increment_gap更多。
    (6) 中文分词器:
    ① IK分词:ES的安装目录 不要有中文 空格
  5. 下载:https://github.com/medcl/elasticsearch-analysis-ik
  6. 创建插件文件夹 cd your-es-root/plugins/ && mkdir ik
  7. 将插件解压缩到文件夹 your-es-root/plugins/ik
  8. 重新启动es
    ② 两种analyzer
  9. ik_max_word:细粒度
  10. ik_smart:粗粒度
    ③ IK文件描述
  11. IKAnalyzer.cfg.xml:IK分词配置文件
  12. 主词库:main.dic
  13. 英文停用词:stopword.dic,不会建立在倒排索引中
  14. 特殊词库:
    a. quantifier.dic:特殊词库:计量单位等
    b. suffix.dic:特殊词库:后缀名
    c. surname.dic:特殊词库:百家姓
    d. preposition:特殊词库:语气词
  15. 自定义词库:比如当下流行词:857、emmm…、渣女、舔屏、996
  16. 热更新:
    a. 修改ik分词器源码
    b. 基于ik分词器原生支持的热更新方案,部署一个web服务器,提供一个http接口,通过modified和tag两个http响应头,来提供词语的热更新

为什么要使用分词器:
这是因为Elasticsearch中默认的分词器,在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。

2020.9.3课前复习:
1、logstash如何测试文件是否正常
logstash -f 文件路径 -t
//-t可以检测出来哪里有问题,比直接报错更精简明确
2、输入有几种
stdin{codec => “json/rubydebug” } 标准输入/控制台输入
file{ path=> “” start_position= “beginning” sincedb_path => “/dev/null”}
jdbc{ jar包地址,编码格式,driver,url,user,password }
3、输出有几种
stdout{ codec => “json/rubydebug”}
file{ path => “”}
elasticsearch{ hosts => [""] document_index="" _type="" _id="" }
4、grok过滤器的用法
grok{
match=>{“message”=>"%{内置匹配规则:字段名}"}

match=>{“message”=>"(?<字段名>匹配规则)"}
}

你可能感兴趣的:(笔记)