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 ...
随机推荐
- DB2临时表空间的作用
临时表空间分为系统临时表空间和用户临时表空间 系统临时表空间用来存储各种数据操作(排序.重组表.创建索引.连接表)中所需的内部临时数据,虽然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使 ...
- face_recognition人脸识别框架
一.环境搭建 1.系统环境 Ubuntu 17.04 Python 2.7.14 pycharm 开发工具 2.开发环境,安装各种系统包 人脸检测基于dlib,dlib依赖Boost和cmake $ ...
- for循环(C语言型)语法
- 图形设计 X11
显示适配器驱动程序安装范例 AMD驱动加载 Intel驱动加载
- 2019 ICPC Universidad Nacional de Colombia Programming Contest C D J
C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O ...
- CUDA学习之一:二维矩阵加法
今天忙活了3个小时,竟然被一个苦恼的CUDA小例程给困住了,本来是参照Rachal zhang大神的CUDA学习笔记来一个模仿,结果却自己给自己糊里糊涂,最后还是弄明白了一些. RZ大神对CUDA关于 ...
- 如何用Word制作斜线表头?
如何用Word制作斜线表头?遇到这种问题,你一般是如何操作?本期企业网盘坚果云干货分享与大家分享有关斜线表头的制作方法. 斜线表头分单斜线表头和多斜线表头,下面分情况来了解相关的解决办法. 单斜线表头 ...
- Pythonf反射
Python中,反射有4个方法.分别是:hasattr().getattr().setattr()和delattr(). hasattr() 定义 hasattr()函数用于判断对象是否包含对应的属性 ...
- Struts2增删改查(自己思路理解)
1:查询所有: DAO层:把所有的信息都放到list集合中.然后返回. public List<Employee> getEmployees(){ return new ArrayList ...
- 【进阶技术】一篇文章搞掂:Docker
注意!!注意系统内存,一开始我使用阿里云1核1G系统,各种问题,搞了几天,原来是内存不足 一.使用VM虚拟机,安装CentOS7.X系统,并安装和使用Docker 1.1.虚拟机安装CentOS7.X ...