在 【分析器介绍】 中,我们提到 分析器 是三个顺序执行的组件的结合(字符过滤器,分词器,标记过滤器)。

    字符过滤器

    分词器

    标记过滤器

    在【深入搜索】中,我们将举例介绍如何使用这些分词器和过滤器。但是首先,我们需要阐述一下如何创建一个自定义分析器

    创建自定义分析器

    与索引设置一样,我们预先配置好 分析器,我们可以再 analysis 字段下配置字符过滤器,分词器和标记过滤器:

    作为例子,我们来配置一个这样的分析器:

    1. html_strip 字符过滤器去除所有的 HTML 标签

    1. "char_filter": {
    2. "&_to_and": {
    3. "type": "mapping",
    4. "mappings": [ "&=> and "]
    5. }
    6. }
    1. 使用 lowercase 标记过滤器将词转为小写

    2. stop 标记过滤器去除一些自定义停用词。

    根据以上描述来将预定义好的分词器和过滤器组合成我们的分析器:

    1. "analyzer": {
    2. "my_analyzer": {
    3. "type": "custom",
    4. "tokenizer": "standard",
    5. "filter": [ "lowercase", "my_stopwords" ]
    6. }

    用下面的方式可以将以上请求合并成一条:

    创建索引后,用 analyze API 来测试新的分析器:

    1. GET /my_index/_analyze?analyzer=my_analyzer
    2. The quick & brown fox

    下面的结果证明我们的分析器能正常工作了:

    1. PUT /my_index/_mapping/my_type
    2. {
    3. "properties": {
    4. "title": {
    5. "type": "string",
    6. "analyzer": "my_analyzer"
    7. }
    8. }