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

tech2024-06-18  73

分词器 (1) 概念: (2) 干啥的: ① 切词 ② normalization(提升recall召回率:能搜索到的结果的比率) (3) 分析器: ① character filter(mapping):分词之前预处理(过滤无用字符、标签等,转换一些&=>and 《Elasticsearch》=> Elasticsearch HTML Strip Character Filter:html_strip a. 参数:escaped_tags 需要保留的html标签Mapping Character Filter:type mappingPattern 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:默认分词器,中文支持的不理想,会逐字拆分。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的安装目录 不要有中文 空格下载:https://github.com/medcl/elasticsearch-analysis-ik创建插件文件夹 cd your-es-root/plugins/ && mkdir ik将插件解压缩到文件夹 your-es-root/plugins/ik重新启动es ② 两种analyzerik_max_word:细粒度ik_smart:粗粒度 ③ IK文件描述IKAnalyzer.cfg.xml:IK分词配置文件主词库:main.dic英文停用词:stopword.dic,不会建立在倒排索引中特殊词库: a. quantifier.dic:特殊词库:计量单位等 b. suffix.dic:特殊词库:后缀名 c. surname.dic:特殊词库:百家姓 d. preposition:特殊词库:语气词自定义词库:比如当下流行词:857、emmm…、渣女、舔屏、996热更新: 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”=>"(?<字段名>匹配规则)"} }

最新回复(0)