分析
分析(analysis):文档在被发送并加入到倒排索引之前,Elasticsearch在其主体上进行的操作。文档在被加入索引之前,Elasticsearch让每个被分析字段经过一系列的处理:
- 字符过滤 - 使用字符过滤器转变字符
- 文本切分为分词 - 将文本切分为单个或多个分词
- 分词过滤 - 使用分词过滤器转变每个分词
- 分词索引- 将这些分词存储到索引中
整体分析流程概览:
1. 字符过滤
字符过滤器将特定的字符序列转变为其它的字符序列。可以用于将HTML从文本中剥离,或者将任意数量的字符转换为其它字符(例如:I love u 2 转变为 I love you too)。上图中将 & 转变为 and
2.切分为分词
在应用了字符过滤器后,文本需要被分割为可以操作的片段。例如:在英文中,根据空格、换行和破折号等字符,将本文分割为单词。Lucene处理的是被成为分词(token)的数据。
3. 分词过滤器
一旦文本块被转换为分词,Elasticsearch将会对每个分词运用分词过滤器(token filter)。这些分词过滤器可以将一个分词作为输入,然后根据需要进行修改、添加或删除。例如:小写分词过滤器。
分词可以经过多于1个的分词过滤器。
4. 分词索引
当分词经历了0个或多个分词过滤器,他们将发送到Lucene进行文档索引,这便做成了倒排索引。
分析器
所有这些不同的部分组成了一个分析器(analyzer)。它可以定义为零个或多个字符过滤器、一个分词器、零个或多个分词过滤器。
为文档使用分析器
了解不同类型的分析器和分词过滤器是必须的。例如:可以在映射中指定分析器使用哪个单独的分词器和分词过滤器,还有哪些字段使用哪些分析器。
有以下两种方式来指定字段所使用的分析器:
- 当创建索引的时候,为特定的索引进行设置
- 在Elasticsearch的配置文件中,设置全局的分析器