美文网首页
999 - Elasticsearch Analysis 05

999 - Elasticsearch Analysis 05

作者: 歌哥居士 | 来源:发表于2019-05-10 16:55 被阅读0次

    HTML Strip Character Filter

    • 将html元素替换成对应的解码值(例如&替换成&)。
    • 示例
    POST _analyze
    {
      "char_filter": [
        "html_strip"
        ],
      "tokenizer": "keyword", 
      "text": "<p>I&apos;m so <b>happy</b>!</p>"
    }
    

    产生

    
    I'm so happy!
    
    

    keyword换成standard产生[ I'm, so, happy ]

    • 配置参数
    参数 说明
    escaped_tags 会被保留的HTML元素

    示例

    POST _analyze
    {
        "char_filter": [
           {
             "type": "html_strip",
             "escaped_tags":["b"]
           }
          ],
        "tokenizer": "keyword", 
        "text": "<p>I&apos;m so <b>happy</b>!</p>"
    }
    

    产生

    
    I'm so <b>happy</b>!
    
    

    Mapping Character Filter

    • 定义一堆键值对,匹配到键就替换成值。
    • 配置参数
    参数 说明
    mappings 键值对数组,格式为key => value
    mappings_path 键值对文件路径。相对于config或绝对路径。
    UTF-8编码。
    每行一个键值对,格式为key => value

    示例

    POST _analyze
    {
      "char_filter": [
        {
          "type": "mapping",
          "mappings": [
              "٠ => 0",
              "١ => 1",
              "٢ => 2",
              "٣ => 3",
              "٤ => 4",
              "٥ => 5",
              "٦ => 6",
              "٧ => 7",
              "٨ => 8",
              "٩ => 9"
          ]
        }
      ], 
      "tokenizer": "keyword",
      "text": "My license plate is ٢٥٠١٥"
    }
    

    产生[ My license plate is 25015 ]

    上一个例子是单字符的替换,也可以多字符。

    POST _analyze
    {
      "char_filter": [
        {
          "type": "mapping",
          "mappings": [
            ":) => _happy_",
            ":( => _sad_"
          ]
        }
      ], 
      "tokenizer": "keyword",
      "text": "I'm delighted about it :("
    }
    

    产生[ I'm delighted about it _sad_ ]

    Pattern Replace Character Filter

    • 使用正则表达式去替换。替换文本可以引用捕获组中的内容。
    • 配置参数
    参数 说明
    pattern Java正则表达式。必须。
    replacement 替换文本。可以使用$1..$9这样的语法,引用捕获组中的值。
    flags Java正则表达式flags,多个用` `分离,例如"CASE_INSENSITIVE | COMMENTS"。

    示例

    POST _analyze
    {
      "char_filter": [
        {
          "type": "pattern_replace",
          "pattern": "(\\d+)-(?=\\d)",
          "replacement": "$1_"
        }
      ],
      "tokenizer": "keyword",
      "text": "My credit card is 123-456-789"
    }
    

    产生[ My credit card is 123_456_789 ]

    相关文章

      网友评论

          本文标题:999 - Elasticsearch Analysis 05

          本文链接:https://www.haomeiwen.com/subject/xkaaoqtx.html