日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

阿里云ES實(shí)現(xiàn)同義詞動(dòng)態(tài)更新

更新時(shí)間:

Elasticsearch(ES)不支持直接動(dòng)態(tài)加載修改的詞典內(nèi)容,您可以通過安裝elasticsearch-analysis-dynamic-synonym插件,實(shí)現(xiàn)動(dòng)態(tài)加載OSS倉(cāng)庫(kù)詞典文件。本文以新網(wǎng)絡(luò)架構(gòu)下的阿里云ES實(shí)例為例,介紹如何實(shí)現(xiàn)同義詞動(dòng)態(tài)更新。

背景信息

阿里云Elasticsearch配置在VPC環(huán)境下,網(wǎng)絡(luò)可選性較小,例如公網(wǎng)環(huán)境下的詞典無(wú)法直接加載。Elasticsearch無(wú)法直接動(dòng)態(tài)加載修改的詞典內(nèi)容,需要結(jié)合場(chǎng)景開發(fā)自定義插件,例如使用elasticsearch-analysis-dynamic-synonym實(shí)現(xiàn)詞典動(dòng)態(tài)加載。

在VPC網(wǎng)絡(luò)架構(gòu)下,您可以通過以下流程,實(shí)現(xiàn)阿里云Elasticsearch加載外部詞典:

  1. 結(jié)合業(yè)務(wù)場(chǎng)景自定義插件。

    例如elasticsearch-analysis-dynamic-synonym插件滿足業(yè)務(wù)場(chǎng)景,編譯該插件源碼,將正確的插件上傳到阿里云Elasticsearch中。

  2. 打通網(wǎng)絡(luò)。

    詞典文件處于公網(wǎng)環(huán)境,或與阿里云Elasticsearch實(shí)例不在同一VPC下,或在自定義插件中集成了詞典所在域名或IP地址,導(dǎo)致網(wǎng)絡(luò)無(wú)法聯(lián)通,您可以通過以下方式加載外部詞典:

    • 優(yōu)先選擇和阿里云Elasticsearch實(shí)例處于同一地域下的OSS內(nèi)網(wǎng)Endpoint作為詞典文件的調(diào)用地址,減少網(wǎng)絡(luò)打通等額外操作。各地域的OSS內(nèi)網(wǎng)Endpoint的詳細(xì)信息,請(qǐng)參見訪問域名和數(shù)據(jù)中心

    • 如果詞典文件存儲(chǔ)在與阿里云Elasticsearch實(shí)例非同一地域的OSS中,或在其他外部網(wǎng)絡(luò)環(huán)境下,您可以通過以下方式加載詞典:

  3. 在阿里云Elasticsearch中創(chuàng)建索引時(shí),通過filter過濾器配置詞典文件,然后應(yīng)用到實(shí)際業(yè)務(wù)中。

注意事項(xiàng)

自定義插件或第三方開源插件的使用和維護(hù)(例如bug影響穩(wěn)定性)等,不在阿里云Elasticsearch的服務(wù)范圍內(nèi),建議您結(jié)合業(yè)務(wù)評(píng)估后使用。

操作流程

  1. 步驟一:環(huán)境準(zhǔn)備

  2. 步驟二:下載elasticsearch-analysis-dynamic-synonym插件并編譯源碼

  3. 步驟三:安裝插件

  4. 步驟四:配置實(shí)例私網(wǎng)打通(可選)

  5. 步驟五:配置nginx代理(可選)

  6. 步驟六:驗(yàn)證插件分詞效果

步驟一:環(huán)境準(zhǔn)備

  1. 創(chuàng)建新網(wǎng)絡(luò)架構(gòu)下的阿里云Elasticsearch實(shí)例,版本為7.10。

    具體操作,請(qǐng)參見創(chuàng)建阿里云Elasticsearch實(shí)例

  2. 開通OSS服務(wù),并創(chuàng)建公共讀Bucket。

  3. 準(zhǔn)備詞典文件,并上傳至OSS。

    具體操作,請(qǐng)參見控制臺(tái)上傳文件。本文使用的示例詞典文件為synonym.txt,文件內(nèi)容如下。詞典文件內(nèi)容

步驟二:下載elasticsearch-analysis-dynamic-synonym插件并編譯源碼

  1. 下載Elasticsearch 7.x版本對(duì)應(yīng)的elasticsearch-analysis-dynamic-synonym插件源碼。

    git clone https://github.com/bells/elasticsearch-analysis-dynamic-synonym
    說明

    在github上下載的master分支源碼,對(duì)應(yīng)的Elasticsearch版本為7.x。

  2. 修改pom.xml依賴版本,使其與Elasticsearch版本保持一致。

    修改依賴版本

  3. 重新編譯打包。

    說明

    編譯過程中可能會(huì)出現(xiàn)報(bào)錯(cuò),不同的版本報(bào)錯(cuò)存在差異,請(qǐng)結(jié)合編譯報(bào)錯(cuò)校正代碼。單擊下載編譯打包后的7.10版本的elasticsearch-analysis-dynamic-synonym插件

步驟三:安裝插件

  1. 登錄阿里云Elasticsearch控制臺(tái)
  2. 上傳并安裝自定義插件elasticsearch-analysis-dynamic-synonym。

    具體操作,請(qǐng)參見上傳與安裝自定義插件

  3. 在Kibana控制臺(tái),執(zhí)行以下命令查看安裝成功的插件。

    說明

    登錄Kibana控制臺(tái)的具體操作,請(qǐng)參見登錄Kibana控制臺(tái)

    GET _cat/plugins?v

    如果返回結(jié)果中包含analysis-dynamic-synonym插件,且版本與Elasticsearch實(shí)例版本一致,說明插件安裝成功。插件安裝結(jié)果

步驟四:配置實(shí)例私網(wǎng)打通(可選)

如果您的詞典文件存儲(chǔ)在與阿里云Elasticsearch實(shí)例處于同一地域下的OSS中,可忽略此步驟。

  1. 登錄阿里云Elasticsearch控制臺(tái)
  2. 配置Elasticsearch實(shí)例私網(wǎng)連接,獲取終端節(jié)點(diǎn)域名作為訪問外部服務(wù)的網(wǎng)絡(luò)鏈接。

    具體操作,請(qǐng)參見配置實(shí)例私網(wǎng)連接。本文配置負(fù)載均衡實(shí)例監(jiān)聽的端口為8081。

步驟五:配置nginx代理(可選)

如果您的詞典文件存儲(chǔ)在與阿里云Elasticsearch實(shí)例處于同一地域下的OSS中,可忽略此步驟。

  1. 在ECS上安裝Nginx。此ECS為步驟四:配置實(shí)例私網(wǎng)打通(可選)中,用來(lái)轉(zhuǎn)發(fā)負(fù)載均衡請(qǐng)求的后端服務(wù)器。

    具體安裝方法請(qǐng)參見Nginx安裝配置

  2. 配置nginx.conf文件。

    使用以下配置替換nginx.conf文件中server部分的配置。

    server {
        listen       8081;
        server_name  localhost;
        charset utf-8;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
         #   root   /usr/share/nginx/html;
        #    index  index.html index.htm;
            proxy_pass  https://<yourBucketName>.oss-cn-beijing.aliyuncs.com/synonym.txt;
        }
    
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    參數(shù)

    說明

    listen

    監(jiān)聽端口。必須和負(fù)載均衡監(jiān)聽端口一致,本文使用8081。

    proxy_pass

    配置代理轉(zhuǎn)發(fā)。本文配置詞典所在的OSS Bucket的URL,獲取方式請(qǐng)參見控制臺(tái)分享文件

  3. 加載修改后的配置文件并重啟Nginx。

    /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新載入配置文件
    /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啟Nginx

步驟六:驗(yàn)證插件分詞效果

  1. 登錄目標(biāo)阿里云Elasticsearch實(shí)例的Kibana控制臺(tái),根據(jù)頁(yè)面提示進(jìn)入Kibana主頁(yè)。
    登錄Kibana控制臺(tái)的具體操作,請(qǐng)參見登錄Kibana控制臺(tái)
    說明 本文以阿里云Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請(qǐng)以實(shí)際界面為準(zhǔn)。
  2. 單擊右上角的Dev tools
  3. Console頁(yè)簽中,執(zhí)行以下命令,創(chuàng)建索引并配置settings,在filter下調(diào)用dynamic_synonym接口,通過synonyms_path實(shí)現(xiàn)遠(yuǎn)程詞典加載。

    PUT elastic_syn
    {
      "settings": {
        "index":{
          "number_of_shards": "3",
          "number_of_replicas": "1",
          "analysis": {
            "analyzer": {
              "ik_max_syno": {
                "type":"custom",
                "tokenizer": "ik_max_word",
                "filter": [
                  "lowercase",
                  "my_syno_filter"
                ]
              }
            },
            "filter":{
              "my_syno_filter":{
                "type":"dynamic_synonym",
                "synonyms_path":"http://ep-bp1ia595641cd36b****-cn-hangzhou-i.epsrv-bp1n7oc1aot41irv****.cn-hangzhou.privatelink.aliyuncs.com:8081",
                "interval": 30
              }
            }
            }
          }
        },
      "mappings": {
        "properties": {
          "like": {
            "type": "text",
            "analyzer": "ik_max_syno",
            "search_analyzer": "ik_max_syno"
          },
          "tx": {
            "type": "text",
            "analyzer": "ik_max_syno",
            "search_analyzer": "ik_max_syno"
          }
        }
      }
    }

    filter中的參數(shù)說明如下,更多參數(shù)說明請(qǐng)參見Dynamic Synonym for ElasticSearch

    參數(shù)

    說明

    type

    詞典文件類型。支持dynamic_synonymdynamic_synonym_graph

    synonyms_path

    詞典配置文件路徑或URL。請(qǐng)根據(jù)具體情況進(jìn)行設(shè)置:

    • 詞典文件存儲(chǔ)在與阿里云Elasticsearch實(shí)例同一地域的OSS中:需要配置為http或https://<yourBucketName>.<OSS內(nèi)網(wǎng)Endpoint>/synonym.txt,例如https://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/synonym.txt。OSS內(nèi)網(wǎng)Endpoint的獲取方式請(qǐng)參見訪問域名和數(shù)據(jù)中心

    • 詞典文件存儲(chǔ)在與阿里云Elasticsearch實(shí)例非同一地域的OSS中,或在其他外部網(wǎng)絡(luò)環(huán)境下(本文以此為例):需要配置為步驟四:配置實(shí)例私網(wǎng)打通(可選)中獲取到的終端節(jié)點(diǎn)域名。

    interval

    刷新詞典的時(shí)間間隔,單位為秒,默認(rèn):60。

  4. 驗(yàn)證分詞效果。

    通過_analyze獲取洋芋分詞效果。

    GET elastic_syn/_analyze
    {
      "analyzer": "ik_max_syno",
      "text": "洋芋"
    }

    預(yù)期結(jié)果如下。分詞結(jié)果

  5. 在遠(yuǎn)程同義詞詞典中更新詞典內(nèi)容,并驗(yàn)證分詞效果。

    更新后的詞典內(nèi)容如下。更新后的詞典內(nèi)容

    通過_analyze獲取仙女分詞效果。

    GET elastic_syn/_analyze
    {
      "analyzer": "ik_max_syno",
      "text": "仙女"
    }

    預(yù)期結(jié)果如下。分詞預(yù)期結(jié)果2