鍍金池/ 教程/ Java/ Elasticsearch分析
Elasticsearch搜索API
Elasticsearch教程
Elasticsearch填充
Elasticsearch測試
Elasticsearch分析
Elasticsearch映射
Elasticsearch入門教程
Elasticsearch版本之間遷移
Elasticsearch集群API
Elasticsearch模塊
Elasticsearch環(huán)境安裝配置
Elasticsearch聚合
Elasticsearch查詢DSL
Elasticsearch索引API
Elasticsearch API約定
Elasticsearch文檔API

Elasticsearch分析

當(dāng)在搜索操作期間處理查詢時(shí),任何索引中的內(nèi)容由分析模塊分析。該模塊由分析器,分詞器,分詞器過濾器和字符過濾器組成。 如果沒有定義分析器,則默認(rèn)情況下注冊內(nèi)置的分析器,分詞器,分詞器過濾器和字符過濾器到分析模塊。例如。

POST http://localhost:9200/pictures

請求正文

{
   "settings": {
      "analysis": {
         "analyzer": {
            "index_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "my_delimiter", "lowercase", "stop", 
                     "asciifolding", "porter_stem"
               ]
            },

            "search_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "lowercase", "stop", "asciifolding", "porter_stem"
               ]
            }
         },

         "filter": {
            "my_delimiter": {
               "type": "word_delimiter",
               "generate_word_parts": true,
               "catenate_words": true,
               "catenate_numbers": true,
               "catenate_all": true,
               "split_on_case_change": true,
               "preserve_original": true,
               "split_on_numerics": true,
               "stem_english_possessive": true
            }
         }
      }
   }
}

響應(yīng)

{"acknowledged":true}

分析器

分析器由令牌器和可選的令牌過濾器組成。這些分析器在具有邏輯名的分析模塊中注冊,可以在映射定義或某些API中引用它們。有許多默認(rèn)分析儀如下 -

編號 分析器 描述
1 標(biāo)準(zhǔn)分析器(標(biāo)準(zhǔn)) 為此分析儀設(shè)置停止字詞和最大令牌長度。默認(rèn)情況下,停用字詞列表為空,最大標(biāo)記長度(max_token_length)為255。
2 簡單分析器(簡單) 這個(gè)分析器由小寫分詞器組成。
3 空白分析器(空格) 這個(gè)分析器由空白分詞器組成。
4 關(guān)鍵字分析器(關(guān)鍵字) 此分析器將整個(gè)流標(biāo)記為單個(gè)令牌。 它可以用于郵政編碼。
5 模式分析器(模式) 該分析器主要處理正則表達(dá)式??梢栽诖朔治銎髦性O(shè)置像小寫字母,模式,標(biāo)志,無用詞的設(shè)置。
6 語言分析器 該分析器處理像印第安語,阿拉伯語,荷蘭語等語言。
7 雪球分析器(雪球) 此分析儀使用標(biāo)準(zhǔn)分段器,帶有標(biāo)準(zhǔn)濾波器,小寫字母過濾器,停止過濾器和雪球過濾器。
8 停止分析器(停止) stopwordsstopwords_path可以配置。 默認(rèn)情況下,停用詞初始化為英語停用詞,stopwords_path包含具有停用詞的文本文件的路徑。
9 自定義分析器(自定義) 此分析器用于創(chuàng)建帶有可選令牌過濾器和字符過濾器的令牌化器的定制分析器。可以在此分析器中配置像tokenizer,filterchar_filterposition_increment_gap等設(shè)置。

令牌器/標(biāo)記生成器

令牌器用于從Elasticsearch中的文本生成令牌。 通過考慮空白或其他標(biāo)點(diǎn)符號,文本可以分解成令牌。 Elasticsearch有大量內(nèi)置的分詞器,可以在自定義分析器中使用。

編號 標(biāo)記生成器 描述
1 標(biāo)準(zhǔn)標(biāo)記生成器(標(biāo)準(zhǔn)) 這是建立在基于語法的標(biāo)記生成器,以及max_token_length可以配置為這個(gè)標(biāo)記生成器。
2 邊緣NGram標(biāo)記生成器(edgeNGram) 可以為此分詞器設(shè)置如:min_gram,max_gram,token_chars的設(shè)置。
3 關(guān)鍵字標(biāo)記生成器(關(guān)鍵字) 這將生成整個(gè)輸入作為輸出,可以為此設(shè)置buffer_size
4 字母標(biāo)記生成器 這將捕獲整個(gè)單詞,直到遇到一個(gè)非字母字符。
5 小寫標(biāo)記生成器(小寫) 這與標(biāo)記生成器相同,但是在創(chuàng)建令牌之后,會(huì)將它們更改為小寫。
6 NGram令牌器(nGram) 類似:min_gram(默認(rèn)值為1),max_gram(默認(rèn)值為2)和token_chars等設(shè)置可以為這個(gè)分詞器。
7 空格標(biāo)記符(空格) 這將根據(jù)空格分隔文本。
8 模式分詞器(模式) 這使用正則表達(dá)式作為標(biāo)記分隔符。可以為此分詞器設(shè)置模式,標(biāo)志和組設(shè)置。
9 UAX電子郵件URL令牌(uax_url_email) 這使用正則表達(dá)式作為標(biāo)記分隔符。 可以為此分詞器設(shè)置模式,標(biāo)志和組設(shè)置。
10 這與標(biāo)準(zhǔn)分詞器工作方式相同,但它將電子郵件和URL作為單個(gè)標(biāo)記。
11 路徑層次化標(biāo)記分隔符(path_hierarchy) 此標(biāo)記器生成輸入目錄路徑中存在的所有可能的路徑??捎糜诖朔衷~器的設(shè)置是分隔符(默認(rèn)為/),replacement,buffer_size(默認(rèn)為1024),reverse(默認(rèn)為false)和skip(默認(rèn)為0)。
12 經(jīng)典分詞器(經(jīng)典) 這在基于令牌的語法基礎(chǔ)上工作??梢詾榇朔衷~器設(shè)置:max_token_length。
13 泰語分詞器(泰語) 此分詞器用于泰語,并使用內(nèi)置的泰語分詞算法。

令牌過濾器

令牌過濾器從令牌化器接收輸入,然后這些過濾器可以修改,刪除或添加輸入的文本。 Elasticsearch提供了大量內(nèi)置的令牌過濾器。它們中的大多數(shù)已經(jīng)在前面的部分中解釋。

字符過濾器

這些過濾器在分詞器之前處理文本。 字符過濾器查找特殊字符或html標(biāo)簽或指定的模式,然后刪除或更改為適當(dāng)?shù)脑~,如’&‘到和,刪除html標(biāo)記標(biāo)記。 這里是同義詞在synonym.txt中指定的分析器的示例 -

{
   "settings":{
      "index":{
         "analysis":{
            "analyzer":{
               "synonym":{
                  "tokenizer":"whitespace", "filter":["synonym"]
               }
            },

            "filter":{
               "synonym":{
                  "type":"synonym", "synonyms_path":"synonym.txt", "ignore_case":"true"
               }
            }
         }
      }
   }
}