Elasticsearch 高级操作-分析器(二)

2023-05-08 11:15:00 浏览数 (1)

使用自定义分析器的索引

代码语言:javascript复制
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer",
          "filter": ["lowercase", "my_synonyms"]
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "whitespace"
        }
      },
      "filter": {
        "my_synonyms": {
          "type": "synonym",
          "synonyms": [
            "computer, pc",
            "laptop, notebook"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

在上述示例中,我们创建了一个名为“my_analyzer”的分析器,使用了自定义的“my_tokenizer”分词器和“lowercase”和“my_synonyms”词语过滤器。此外,我们定义了一个名为“my_synonyms”的过滤器,将一些同义词(如“computer”和“pc”)转换为相同的单词。

分析器示例

下面是一个使用分析器的搜索示例:

代码语言:javascript复制
GET /my_index/_search
{
  "query": {
    "match": {
      "title": "personal computer"
    }
  }
}

在上述示例中,我们搜索包含“personal computer”短语的文档。由于我们在索引时使用了自定义的分析器,因此Elasticsearch会将查询字符串分割为两个单词(“personal”和“computer”),并将“computer”转换为“pc”,以便匹配包含这些单词的文档。

0 人点赞