基本概念
Elasticsearch Analyzer 由三部分构成:(零个或多个)character filters、(一个 )tokenizers、(零个或多个)token filters。
Analyzer 主要用于两个地方:
- 索引文档时,分析处理「文档字段」analyzed fields
- 搜索文档时,分析处理「查询字符串」query strings
Analyzer 中各个部分的工作顺序如下:
(Input) –> [Character Filters] –> [Tokenizers] –> [Token filters] –> (Tokens or Terms)
更多说明参考 Analysis 和 Mapping -> Mapping parameters -> analyzer。
另外,Elasticsearch Analyzer 的内部机制 这篇文章总结得也很到位。
内置 Analyzers
ElasticSearch 包括多种内置的 Analyzers。更多说明参考 Analysis -> Analyzers。
例如,如果要使用内置的「标准 Analyzer」,则需要指定 type
为 standard
。
自定义 Analyzers
ElasticSearch 也支持自定义 Analyzers,这正是其强大之处。自定义 Analyzer 必须指定 type
为 custom
。
例如:
1 | $ curl -XDELETE 'http://localhost:9200/test' |
如果只是想测试 Analyzer 是否工作,也可以不用指定索引。更多说明参考 Indices APIs -> Analyze。
例如上述 Analyzer 可以这样测试:
1 | $ curl -XGET 'http://localhost:9200/_analyze' -d ' |