首页 > 解决方案 > 标准分析器的 Elasticsearch 自定义分隔符

问题描述

是否可以为分析仪提供自定义的分隔符列表standard

我的应用程序提供了一个元素下拉列表,我可以在其中选择dog,cat,mouse该值并将其用作搜索过滤器。我希望能够选择狗、猫或鼠标作为过滤器值。请注意,逗号不是此元素字段的唯一分隔符。我也可以有dog&catdog<br>catdog;cat;mouse

字段映射:

"mappings": {
    "properties": {
        "element": {
            "type": "text",
        }
        ................
    }
}

标签: elasticsearchelasticsearch-mapping

解决方案


您可以使用可以将特定字符替换为其他字符的char_filter, & ,elasticsearch 已经中断,对于其他字符(不是分隔符),您可以在 char_filter 中定义它们。

您还可以使用如下所示的分析 API 来查看 char_filter 是否正确替换了您的分隔符。

由于<br>HTML 代码和标准分析器将为它创建一个标记,因此您可以使用html_stripchar_filter,如下所示:

{
  "tokenizer" : "standard",
  "filter" : ["lowercase"],
  "char_filter" : ["html_strip"],
  "text" : "dog<br>cat"
}


{
    "tokens": [
        {
            "token": "dog",
            "start_offset": 0,
            "end_offset": 3,
            "type": "<ALPHANUM>",
            "position": 0
        },
        {
            "token": "cat",
            "start_offset": 7,
            "end_offset": 10,
            "type": "<ALPHANUM>",
            "position": 1
        }
    ]
}

推荐阅读