ElasticSearch中分词器组件配置详解
首先要明确一点,ElasticSearch是基于Lucene的,它的很多基础性组件,都是由Apache Lucene提供的,而es则提供了更高层次的封装以及分布式方面的增强与扩展。
所以要想熟练的掌握的关于es中分词方面的知识,一定得先从Lucene抓起,否则只会是丈二和尚摸不着头脑,当然我们大多数开发者只关注于怎么用,偏底层的东东,也没有太多时间去深究,这也有情可原,遇到问题再去探究,也何尝不是一种办法,如果有时间,还是建议看看Lucene基础的知识。
在ElasticSearch或Solr中,都提供了基于配置的可插拔式的分词插件,管理方式,这样以来就组合配置方式就非常灵活,在es中,一个analysis集合
可以包含多个analyzer,而一个analyzer则由一个单个的tokenizer,零个或多个的tokenfilter组成,而一个tokenizer又可以包含零个或多个的charFilter。总体的执行流程如下图:

在es里面的一个模板配置如下:
- index :
- analysis ://一个analysis可以包含多个analyzer,tokenizer,filter,char_filter配置
- analyzer :// 一个analyzer下面可以包含一个tokenizer,多个filter和char_filter, position_increment_gap是距离查询时,最大允许查询的距离,默认是100
- myAnalyzer1 :
- type : custom
- tokenizer : myTokenizer1
- filter : [myTokenFilter1, myTokenFilter2]
- char_filter : [my_html]
- position_increment_gap: 256
- myAnalyzer2 :
- type : custom
- tokenizer : myTokenizer1
- filter : [myTokenFilter1, myTokenFilter2]
- char_filter : [my_html]
- position_increment_gap: 256
- tokenizer :
- myTokenizer1 :
- type : standard
- max_token_length : 900
- myTokenizer2 :
- type : keyword
- max_token_length : 900
- filter :
- myTokenFilter1 :
- type : stop
- stopwords : [stop1, stop2, stop3, stop4]
- myTokenFilter2 :
- type : length
- min : 0
- max : 2000
- char_filter :
- my_html :
- type : html_strip
- escaped_tags : [xxx, yyy]
- read_ahead : 1024
一个比较完整的分词器配置案例,就如上面的例子,几乎涵盖了所有可能用到的组件,而我们在实际应用中,要做的就是,选择组合我们需要的组件,定制成一个分词器,然后就可以使用了,
上面的这段配置,我们需要配置在elasticsearch.yml文件中,全局有效,然后我们就可以在静态mapping或动态mapping中引用和使用它了。
参考链接:
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/analysis-custom-analyzer.html
ElasticSearch中分词器组件配置详解的更多相关文章
- Tomcat中的Server.xml配置详解
Tomcat中的Server.xml配置详解 Tomcat Server的结构图如下: 该文件描述了如何启动Tomcat Server <Server> <Listener /> ...
- Linux中Nginx安装与配置详解
转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...
- Apache 中httpd.conf文件配置详解(转载)
httpd.conf文件配置详解 Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现.下面让我们来看看htt ...
- elasticsearch ik中文分词器的使用详解
(基于es5.4)先喵几眼github,按照步骤安装好分词器 link:https://github.com/medcl/elasticsearch-analysis-ik 复习一下常用的操作 .查看 ...
- binlog之四:mysql中binlog_format模式与配置详解,binlog的日志格式详解
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...
- ElasticSearch中辅助API常用用法详解
本篇是使用Elasticsearch必不可少的必备知识,并且适用于所有的Rest Api. 返回数据格式化 当在Rest请求后面添加?pretty时,结果会以Json格式化的方式显示.另外,如果添加? ...
- mysql中binlog_format模式与配置详解
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...
- Spring中配置文件applicationContext.xml配置详解
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- Eclipse中使用javap运行配置详解
javap是sun提供的对class文件进行反编译的工具 1.配置Run---external tools---external tools configurations 选择Program 新建ja ...
随机推荐
- Java8 新增BASE64加解密API
什么是Base64编码? Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 基于64个字符A-Z,a-z,0-9,+,/ ...
- 初始 vue
1.js,jQuery编程范式:命令式编程 vue编程范式:声明式编程 v-for 遍历数组内容 v-on: click 监听点击事件,语法糖 @click el: 类型:string | H ...
- layui修改表格行高
.layui-table-cell { height: auto !important; white-space: normal; }
- 第十三章 存储之volume
容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动.其 ...
- JS数字转字符串的方法(number to string)
一.双点解析 ..toString(); 二.括号先计算再转换 ().toString(); 三.加空串 + ''
- 九、结构模式之装饰(Decorator)模式
装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展. 装饰模式结构图如下: 其包含的角色就分为: ...
- 【串线篇】SQL映射文件delete/ insert/ update标签
一. <insert id="insertEmployee"> INSERT INTO t_employee(empname,gender,email) VALUES( ...
- Python3.5-20190513-廖老师-自我笔记-函数式编程
把复杂的任务拆成各个小的函数,通过函数的调用来完成任务.这就是面向过程编程. 高阶函数:就是让函数的参数能够接收别的函数.把函数作为参数传入到另一个函数. 函数名也是变量.和变量用法一样的,指向一个函 ...
- docker 运行jenkins及vue项目与springboot项目(二.docker运行jenkins为自动打包运行做准备)
docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...
- Ubuntu更新完NVIDIA驱动后,重启电脑进入不了系统,一直处于登录界面
如题描述,我的系统是Ubuntu16.04,安装caffe的过程将一些驱动更新了,后来重启电脑时发现我进入不了系统了,输入我的登录密码会发现屏幕一闪,然后又重新跳回到登录界面,就是进入了login l ...