第三个重要的索引设置是analysis部分,用来配置已存在的分析器或针对你的索引创建新的自定义分析器。

    分析与分析器 ,我们介绍了一些内置的分析器,用于将全文字符串转换为适合搜索的倒排索引。

    standard 分析器是用于全文字段的默认分析器,对于大部分西方语言系来说是一个不错的选择。他包括了以下几点:

    1. standard 分词器,通过单词边界分割输入的文本。
    2. standard 语汇单元过滤器,目的是整理分词器触发的词汇单元(但是目前什么都没做)。
    3. lowercase 语汇单元过滤器,转换所有的语汇单元为小写。
    4. stop 语汇单元过滤器,删除停用词——对搜索相关性影响不大的常用词,如a,the,and,is。

    默认情况下,停用词过滤器是被禁用的。如需启用它,你可以通过创建一个基于standard 参数。可以给分析器提供一个停用词列表,或者告知使用一个基于特定语言的预定义停用词列表。

    在下面的例子中,我们创建了一个新的分析器,叫做es_std,并使用预定义的西班牙语停用词列表:

    1. PUT /spanish_docs
    2. {
    3. "settings": {
    4. "analysis": {
    5. "analyzer": {
    6. "es_std": {
    7. "type": "standard",
    8. "stopwords": "_spanish_"
    9. }
    10. }
    11. }
    12. }
    13. }

    es_std 分析器不是全局的——他仅仅存在于我们定义的spanish_docs索引中。为了使用analyze API 来对他进行测试,我们必须使用特定的索引名:

    GET /spanish_docs/_analyze?analyzer=es_std
    El veloz zorro marrón
    

    简化的结果显示西班牙语停用词EL 已被正确的移除:

    {
      "tokens" : [
        { "token" :    "veloz",   "position" : 2 },
        { "token" :    "zorro",   "position" : 3 },
        { "token" :    "marrón",  "position" : 4 }
      ]
    }