教程 elasticsearch tutorial

自定义分析器

Elasticsearch 允许用户根据业务需求,自定义分析器(Analyzer),通过组合分词器(Tokenizer)、字符过滤器(Char Filter)和令牌过滤器(Token Filter)来实现个性化的文本处理和索引策略。

1. 自定义分析器组成

  • 字符过滤器(Char Filter):预处理文本,如替换字符、HTML 标签处理
  • 分词器(Tokenizer):将文本拆分为词项
  • 令牌过滤器(Token Filter):对分词结果进行处理,如小写转换、同义词替换、停用词过滤

2. 创建自定义分析器示例

json
PUT /my-index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "replace_filter": {
          "type": "mapping",
          "mappings": ["&=>和"]
        }
      },
      "filter": {
        "my_stop": {
          "type": "stop",
          "stopwords": ["的", "了", "和"]
        }
      },
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "char_filter": ["replace_filter"],
          "tokenizer": "standard",
          "filter": ["lowercase", "my_stop"]
        }
      }
    }
  }
}

`

该示例定义了一个自定义分析器 my_custom_analyzer,包含字符替换、小写转换和停用词过滤。

3. 使用自定义分析器

指定索引时,设置字段使用该分析器:

json
PUT /my-index/_mapping
{
  "properties": {
    "content": {
      "type": "text",
      "analyzer": "my_custom_analyzer"
    }
  }
}

4. 注意事项

  • 自定义分析器适合复杂文本处理需求
  • 配置时需保证组件顺序合理,避免冲突
  • 调试时可使用 _analyze API 测试分析效果

通过自定义分析器,用户可以实现精准的文本解析与索引,提升搜索的相关性和灵活性。