日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch自定义分析器(custom analyzer)

發(fā)布時間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch自定义分析器(custom analyzer) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于elasticsearch7.6.1 和 kibana7.6.1

一、基礎知識

一個完整的分析器Analyzer包括如下三個組件:

  • Character Filters: 對文本信息就行預處理,比如對原始文本刪減或替換字符
  • Token Filters: 分詞后過濾,對分詞后的詞語列表進行處理(過濾,刪除等)
  • Tokenizer:分詞器,即將原始文本按照一定規(guī)則切分為詞語(token)
  • 1. Character Filters

    es內置的Character Filters包括:html_strip: 去除html標簽, mapping:字符串替換|映射, pattern_replace: 正則匹配替換。

    案例演示

    # char_filter: "html_strip"去除 html 標簽

    POST _analyze
    {
    ? "char_filter": [
    ? ? "html_strip"
    ? ],
    ? "tokenizer": "standard",
    ? "text": "<html><body><div><span>You Know, for Search<span></div><body><html>"
    }

    # char_filter: "mapping"字符串替換|映射

    POST _analyze
    {
    ? "char_filter": [
    ? ? {
    ? ? ? "type": "mapping",
    ? ? ? "mappings": [
    ? ? ? ? "&=>and",
    ? ? ? ? "&&=>and"
    ? ? ? ]
    ? ? }
    ? ],
    ? "tokenizer": "standard",
    ? "text": "You & me, go && java"
    }

    ?# char_filter: "pattern_replace"正則匹配替換

    POST _analyze
    {
    ? "char_filter": [
    ? ? {
    ? ? ? "type": "pattern_replace",
    ? ? ? "pattern": "(v[0-9.]+)",
    ? ? ? "replacement": "latest version"
    ? ? }
    ? ],?
    ? "tokenizer": "standard",
    ? "text": "kibana v7.6.1 and elasticsearch v7.6.1"
    }

    # char_filter: 多個組合使用

    POST _analyze
    {
    ? "char_filter": [
    ? ? "html_strip",
    ? ? {
    ? ? ? "type": "mapping",
    ? ? ? "mappings": [
    ? ? ? ? "&=>and",
    ? ? ? ? "&&=>and"
    ? ? ? ]
    ? ? },
    ? ? {
    ? ? ? "type": "pattern_replace",
    ? ? ? "pattern": "(v[0-9.]+)",
    ? ? ? "replacement": "latest version"
    ? ? }
    ? ],
    ? "tokenizer": "standard",
    ? "text": "<html><body><div><span>kibana v7.6.1 && elasticsearch v7.6.1<span></div><body><html>"
    }?

    2. Token Filters

    Token Filters對Tokenizer分詞后的結果進行再加工,包括字符處理,過濾,刪除等操作,es內置的Token Filters包括: lowercase(轉小寫), stop(刪除停止詞), synonym(添加同義詞)。

    案例演示

    # filter: "stop"

    # 默認停用詞列表全是小寫詞語,單詞'A'雖然是停用詞,但因為是大寫的,單獨使用stop這個token filter無法將其過濾掉。

    POST _analyze
    {
    ? "tokenizer": "standard",
    ? "filter": [
    ? ? "stop"
    ? ],
    ? "text": "A man sat alone on a stone bench"
    }

    # filter: "stop" and "lowercase"

    # 注意兩者的作用順序

    POST _analyze
    {
    ? "tokenizer": "standard",
    ? "filter": [
    ? ? "lowercase",
    ? ? "stop"
    ? ],
    ? "text": "A man sat alone on a stone bench"
    }

    二、在索引中自定義分析器Analyzer

    案例演示

    案例01

    # 通過組合character filter, tokernizer, token filter來實現自定義的分析器

    # standard_custom: 是自定義分析器的名稱

    PUT movies
    {
    ? "settings": {
    ? ? "number_of_replicas": 1,
    ? ? "number_of_shards": 1,
    ? ? "analysis": {
    ? ? ? "analyzer": {
    ? ? ? ? "standard_custom": {
    ? ? ? ? ? "type": "custom",
    ? ? ? ? ? "char_filter": [
    ? ? ? ? ? ? "html_strip"
    ? ? ? ? ? ],
    ? ? ? ? ? "tokenizer": "standard",
    ? ? ? ? ? "filter": [
    ? ? ? ? ? ? "lowercase",
    ? ? ? ? ? ? "stop"
    ? ? ? ? ? ]
    ? ? ? ? }
    ? ? ? }
    ? ? }
    ? }
    }?

    # 使用自定義的分析器和標準分析器(注意觀察兩者結果的區(qū)別)

    GET movies/_analyze
    {
    ? "analyzer": "standard_custom",
    ? "text": "<html><body><div><span>A man sat alone on a stone bench<span></div><body><html>"
    }


    GET movies/_analyze
    {
    ? "analyzer": "standard",
    ? "text": "<html><body><div><span>A man sat alone on a stone bench<span></div><body><html>"
    }

    案例02

    PUT songs
    {
    ? "settings": {
    ? ? "number_of_replicas": 1,
    ? ? "number_of_shards": 1,
    ? ? "analysis": {
    ? ? ? "char_filter": {
    ? ? ? ? "CF1": {
    ? ? ? ? ? "type": "pattern_replace",
    ? ? ? ? ? "pattern": "(v[0-9.]+)",
    ? ? ? ? ? "replacement": "latest version"
    ? ? ? ? },
    ? ? ? ? "CF2": {
    ? ? ? ? ? "type": "mapping",
    ? ? ? ? ? "mappings": [
    ? ? ? ? ? ? "&=>and",
    ? ? ? ? ? ? "&&=>and"
    ? ? ? ? ? ]
    ? ? ? ? }
    ? ? ? },
    ? ? ? "analyzer": {
    ? ? ? ? "standard_custom": {
    ? ? ? ? ? "type": "custom",
    ? ? ? ? ? "char_filter": [
    ? ? ? ? ? ? "html_strip",
    ? ? ? ? ? ? "CF1",
    ? ? ? ? ? ? "CF2"
    ? ? ? ? ? ],
    ? ? ? ? ? "tokenizer": "standard",
    ? ? ? ? ? "filter": [
    ? ? ? ? ? ? "lowercase",
    ? ? ? ? ? ? "stop"
    ? ? ? ? ? ]
    ? ? ? ? }
    ? ? ? }
    ? ? }
    ? }
    }?

    # 使用自定義的分析器

    GET songs/_analyze
    {
    ? "analyzer": "standard_custom",
    ? "text": "<html><body><div><span>A man sat alone on a stone bench & kibana v7.6.1 && elasticsearch v7.6.1<span></div><body><html>"
    }?

    總結

    以上是生活随笔為你收集整理的ElasticSearch自定义分析器(custom analyzer)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。