Search analyzer(搜索分析器)

search_analyzer 映射参数指定在搜索时用于text字段的分析器。这使得用于索引的分析器可以与用于搜索的分析器不同,从而提供对搜索词如何解释和匹配的更大控制权。

默认情况下,索引和搜索使用相同的分析器。然而,当您希望在搜索期间应用更宽松或更严格的匹配规则时(例如,仅在搜索时使用词干提取或移除停用词),使用自定义的 search_analyzer 会很有帮助。

示例

以下示例创建一个字段,该字段在索引时使用配置了edge_ngram_tokenizeredge_ngram_analyzer,而在搜索时使用standard 分析器

PUT /articles
{
  "settings": {
    "analysis": {
      "analyzer": {
        "edge_ngram_analyzer": {
          "tokenizer": "edge_ngram_tokenizer",
          "filter": ["lowercase"]
        }
      },
      "tokenizer": {
        "edge_ngram_tokenizer": {
          "type": "edge_ngram",
          "min_gram": 2,
          "max_gram": 10,
          "token_chars": ["letter", "digit"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "edge_ngram_analyzer",
        "search_analyzer": "standard"
      }
    }
  }
}