标签归档:索引

elasticsearch (三) 索引管理

创建索引

之前我们简单的通过添加一个文档的方式创建了一个索引。这个索引使用默认设置,新的属性通过动态映射添加到分类中。现在我们需要手动创建索引,在请求中加入所有设置和类型映射。

事实上,你可以通过在 config/elasticsearch.yml 中添加下面的配置来防止自动创建索引。

以下为创建索引的格式:


索引设置

提示: Elasticsearch 提供了优化好的默认配置。除非你明白这些配置的行为和为什么要这么做,请不要修改这些配置。

下面是两个最重要的设置:

number_of_shards
定义一个索引的主分片个数,默认值是 5。这个配置在索引创建后不能修改。

number_of_replicas
每个主分片的复制分片个数,默认是 1。这个配置可以随时在活跃的索引上修改。

例如,我们可以创建只有一个主分片,没有复制分片的小索引。

然后,我们可以用 update-index-settings API 动态修改复制分片个数:


配置分析器

analysis是用来配置已存在的分析器或创建自定义分析器来定制化你的索引。

standard 分析器是用于全文字段的默认分析器,对于大部分西方语系来说是一个不错的选择。它考虑了以下几点:

  • standard 分词器,在词层级上分割输入的文本。
  • standard 表征过滤器,被设计用来整理分词器触发的所有表征(但是目前什么都没做)。
  • lowercase 表征过滤器,将所有表征转换为小写。
  • stop 表征过滤器,删除所有可能会造成搜索歧义的停用词,如 atheandis

默认情况下,停用词过滤器是被禁用的。如需启用它,你可以通过创建一个基于 standard 分析器的自定义分析器,并且设置 stopwords 参数。可以提供一个停用词列表,或者使用一个特定语言的预定停用词列表。

在下面的例子中,我们创建了一个新的分析器,叫做 es_std,并使用预定义的西语停用词:

es_std 分析器不是全局的,它仅仅存在于我们定义的 spanish_docs 索引中。为了用 analyze API 来测试它,我们需要使用特定的索引名。

以下是返回结果,停用词 El 被正确的删除了


自定义分析器

虽然 Elasticsearch 内置了一系列的分析器,但是真正的强大之处在于定制你自己的分析器。你可以通过在配置文件中组合字符过滤器,分词器和表征过滤器,来满足特定数据的需求。

字符过滤器

字符过滤器是让字符串在被分词前变得更加“整洁”。例如,如果我们的文本是 HTML 格式,它可能会包含一些我们不想被索引的 HTML 标签,诸如 <p> 或 <div>。

我们可以使用 html_strip 字符过滤器 来删除所有的 HTML 标签,并且将 HTML 实体转换成对应的 Unicode 字符,比如将 & Aacute ; 转成 Á。

一个分析器可能包含零到多个字符过滤器。