当传送数据到Elasticsearch的时候,究竟发生了什么?
一、什么是分析
分析是在文档被发送并加入倒排索引之前,Elasticsearch在其主体上进行的操作,在文档被加入索引之前,Elasticsearch让每个被分析字段经过一系列的处理步骤。
1.字符过滤——使用字符过滤器转变字符
2.文本切分为分词——将文本切分为单个或多个分词
3.分词过滤——使用分词过滤器转变每个分词
4.分词索引——将这些分词存储到索引中
二、为文档使用分析器
有两种方式来指定字段所使用的分析器
1.当创建索引的时候,为特定的索引进行设置
2.在Elasticsearch的配置文件中,设置全局的分析器
在索引创建时增加分析器
在分析器对象中设置定制分析器、分词器、定制过滤器、字符过滤器、映射
三、使用分析API来分析文本
四、分析器、分词器和分词过滤器
字符过滤器:用来整理一个尚未被分词的字符串,例如移除不需要检索的字符。一个分析器可能有0个或者多个字符过滤器。
分词器:一个分析器必须有一个唯一的分词器。词器把字符串分解成单个词条或者词汇单元
分词过滤器:经过分词,作为结果的词单元流会按照指定的顺序通过指定的词单元过滤器。分词过滤器可以添加、删除、修改词单元。
内置的分析器
1.标准分析器
包括标准分词器、标准分词过滤器、小写转换分词过滤器和停用词分词过滤器
2.简单分析器
只使用了小写转换分词器。只在非字母处进行分词,并将分词自动转变为小写
3.空白分析器
什么事情都不做,只是根据空白将文本切分为若干分词
4.停用词分析器
和简单分析器的行为很相像,只是在分词流中额外地过滤了停用词
5.关键词分析器
将整个字段当作一个单独的分词
6.模式分析器
允许指定一个分词切分的模式。但是由于可能无论如何都要指定模式,通常更有意义的做法是使用定制分析器,组合现有的模式分词器和所需的分词过滤器
分词器
1.标准分词器
是一个基于语法的分词器,分词默认的最大长度是255。它也移除了都好和句号这样的标点符号
2.关键词分词器
是一种简单的分词器,将整个文本作为单个的分词,提供给分词过滤器
3.字母分词器
根据非字母的符号,将文本切分为分词
4.小写分词器
结合了常规的字母分词器和小写分词过滤器的行为
5.空白分词器
通过空白来分隔不同的分词,空白包括空格、制表符、换行等
6.模式分词器
允许指定一个任意的模式,将文本切分为分词
分词过滤器
1.标准分词过滤器
什么都没做
2.小写分词过滤器
将任何经过的分词转换为小写
3.长度分词过滤器
将长度超出最短和最长限制范围的单词过滤掉
4.停用词分词过滤器
将停用词从分词流中移除
小结
1.分析是通过文档字段的文本,生成分词的过程。在match查询这样的查询中,搜索字符串会经过同样的过程,如果一篇文档的分词和搜索字符串的分词相匹配,那么他就会和搜索匹配
2.通过映射,每个字段都会分配一个分析器。分析器既可以在Elasticsearch配置或或索引设置中定义,也可以是一个默认的分析器
3.分析器是处理的链条,由一个分词器以及若干再次分析器之前的字符过滤器、在此分词器之后的分词过滤器组成
4.在字符串传送到分词器之前,字符过滤器先处理这些字符串
5.分词器用于将字符串切分为多个分词。例如空白分词器使用空格来划分
6.分词过滤器用于处理分词器所产生的分词。例如可以使用词干提取来讲单词缩减为其词根,并让搜索在该词的复数和单数形式上都可以正常运作