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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch自定义分析器(custom analyzer)

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

基于elasticsearch7.6.1 和 kibana7.6.1

一、基礎(chǔ)知識(shí)

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

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

    es內(nèi)置的Character Filters包括:html_strip: 去除html標(biāo)簽, mapping:字符串替換|映射, pattern_replace: 正則匹配替換。

    案例演示

    # char_filter: "html_strip"去除 html 標(biāo)簽

    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: 多個(gè)組合使用

    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對(duì)Tokenizer分詞后的結(jié)果進(jìn)行再加工,包括字符處理,過(guò)濾,刪除等操作,es內(nèi)置的Token Filters包括: lowercase(轉(zhuǎn)小寫(xiě)), stop(刪除停止詞), synonym(添加同義詞)。

    案例演示

    # filter: "stop"

    # 默認(rèn)停用詞列表全是小寫(xiě)詞語(yǔ),單詞'A'雖然是停用詞,但因?yàn)槭谴髮?xiě)的,單獨(dú)使用stop這個(gè)token filter無(wú)法將其過(guò)濾掉。

    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

    # 通過(guò)組合character filter, tokernizer, token filter來(lái)實(shí)現(xiàn)自定義的分析器

    # 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"
    ? ? ? ? ? ]
    ? ? ? ? }
    ? ? ? }
    ? ? }
    ? }
    }?

    # 使用自定義的分析器和標(biāo)準(zhǔn)分析器(注意觀察兩者結(jié)果的區(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>"
    }?

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。