Elasticsearch之analysis
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch之analysis相关的知识,希望对你有一定的参考价值。
1、简介
analysis(只是一个概念),文本分析是将全文本转换为一系列单词的过程,也叫分词。analysis是通 过analyzer(分词器)来实现的,可以使用Elasticsearch内置的分词器,也可以自己去定制一些分词 器。 除了在数据写入的时候进行分词处理,那么在查询的时候也可以使用分析器对查询语句进行分词。
anaylzer是由三部分组成,例如有:Hello a World, the world is beautiful
1. Character Filter: 将文本中html标签剔除掉。
2. Tokenizer: 按照规则进行分词,在英文中按照空格分词。
3. Token Filter: 去掉stop world(停顿词,a, an, the, is, are等),然后转换小写
2、内置分词器
内置分词器示例:
3、ik分词器
IK分词器在任何操作系统下安装步骤均⼀样: 在ES的家⽬录下的 plugins ⽬录下创建名为 ik 的 ⽂件夹,然后将下载后的 zip 包拷⻉到 ik 解压即可
IK分词器提供了两种分词⽅式:
验证:
4、⾃定义词库
在很多的时候,业务上的⼀些词库极有可能不在IK分词器的词库中,需要去定制属于我们⾃⼰的词 库。例如下⾯的例⼦中, 正井猫 、 up主 被切分为⼀个个的字,我们希望这两个词语是不被拆 分;另外 的 作为中⽂的停顿词,也不希望出现在分词中,所以我们需要⾃定义词库和停顿词词 库。
进⼊到 $ES_HOME/plugins/ik/config ⽬录下,创建 custom ⽬录,在⽬录下创建 mydic.dic 、 ext_stopword.dic ⽂件,
在 mydic.dic ⽂件中添加两⾏内容:
在 ext_stopword.dic 中添加⼀⾏内容:最后修改 $ES_HOME/plugins/ik/config/IKAnalyzer.cfg.xml ⽂件,内容如下:
重启重启elasticsearch elasticsearch , 重新执⾏如上的命令,结果如下:
5、IK分词器在工作中的实际案例
5.1、首先创建new索引的mapping
PUT news { "mappings": { "properties": { "title":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" }, "content":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } } }
注意:analyzer和search_analyzer的区别如下:
analyzer:表示数据在进入news这个索引中的时候,我们尽量让它多的对我们数据进行分词,后面才能够达到精准的匹配。
search_analyzer:对我们的数据进行搜索的时候不要进行过多的分词处理,提高效率。
5.2、查看创建的索引结构
GET news/_mapping
5.3、创建数据进入索引
5.4、通过语句查询
下面我们再新增两条数据测试
查询一下柳岩:
可以发现我们其实仅仅只是查询柳岩,但是两条数据都查询出来了,那么我们首先配置一下mydic.dic扩展词典:
重新启动elasticsearch:
因为我们之前的数据已经分过词了,所以我们需要重新分词相关数据:
先重新索引柳岩:
POST news/_update_by_query { "query": { "bool": { "should": [ { "bool": { "must": [ { "term": { "title": { "value": "柳" } } },{ "term": { "title": { "value": "岩" } } } ] } },{ "bool": { "must": [ { "term": { "content": { "value": "柳" } } },{ "term": { "content": { "value": "岩" } } } ] } } ] } } }
先重新索引柳真:
POST news/_update_by_query { "query": { "bool": { "should": [ { "bool": { "must": [ { "term": { "title": { "value": "柳" } } },{ "term": { "title": { "value": "真" } } } ] } },{ "bool": { "must": [ { "term": { "content": { "value": "柳" } } },{ "term": { "content": { "value": "真" } } } ] } } ] } } }
再次查询:
6、pinyin分词器的安装
pinyin 分词器在任何操作系统下安装步骤均⼀样: 在ES的家⽬录下的 plugins ⽬录下创建名为 pinyin 的⽂件夹,然后将下载后的 zip 包拷⻉到 pinyin 解压即可
重启es
测试pingyin插件
效果:
6、Elasticsearch之⾃定义分词器以及应⽤
6.1、案例需求:
6.2、设置分词器
6.3、验证分词器效果
6.4、为属性添加分词器
6.5、结果验证
执⾏如下命令添加数据
以上是关于Elasticsearch之analysis的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch 2.3.x 拼音分词 analysis-lc-pinyin
ElasticSearch系列:ElasticSearch HeadKibanaElasticsearch-Analysis-Ik安装使用