ES数据分析analysis

404 阅读2分钟

分析

分析(analysis):文档在被发送并加入到倒排索引之前,Elasticsearch在其主体上进行的操作。文档在被加入索引之前,Elasticsearch让每个被分析字段经过一系列的处理:

  • 字符过滤 - 使用字符过滤器转变字符
  • 文本切分为分词 - 将文本切分为单个或多个分词
  • 分词过滤 - 使用分词过滤器转变每个分词
  • 分词索引- 将这些分词存储到索引中

整体分析流程概览:

image.png

1. 字符过滤

字符过滤器将特定的字符序列转变为其它的字符序列。可以用于将HTML从文本中剥离,或者将任意数量的字符转换为其它字符(例如:I love u 2 转变为 I love you too)。上图中将 & 转变为 and

2.切分为分词

在应用了字符过滤器后,文本需要被分割为可以操作的片段。例如:在英文中,根据空格、换行和破折号等字符,将本文分割为单词。Lucene处理的是被成为分词(token)的数据。

3. 分词过滤器

一旦文本块被转换为分词,Elasticsearch将会对每个分词运用分词过滤器(token filter)。这些分词过滤器可以将一个分词作为输入,然后根据需要进行修改、添加或删除。例如:小写分词过滤器。

分词可以经过多于1个的分词过滤器。

4. 分词索引

当分词经历了0个或多个分词过滤器,他们将发送到Lucene进行文档索引,这便做成了倒排索引。

分析器

所有这些不同的部分组成了一个分析器(analyzer)。它可以定义为零个或多个字符过滤器、一个分词器、零个或多个分词过滤器。

为文档使用分析器

了解不同类型的分析器和分词过滤器是必须的。例如:可以在映射中指定分析器使用哪个单独的分词器和分词过滤器,还有哪些字段使用哪些分析器。

有以下两种方式来指定字段所使用的分析器:

  • 当创建索引的时候,为特定的索引进行设置
  • 在Elasticsearch的配置文件中,设置全局的分析器