Elasticsearch分析

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

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
            }
         }
      }
   }
}

響應

{"acknowledged":true}

分析器

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

編號

分析器

描述

1

標準分析器(標準)

爲此分析儀設置停止字詞和最大令牌長度。默認情況下,停用字詞列表爲空,最大標記長度(max_token_length)爲255。

2

簡單分析器(簡單)

這個分析器由小寫分詞器組成。

3

空白分析器(空格)

這個分析器由空白分詞器組成。

4

關鍵字分析器(關鍵字)

此分析器將整個流標記爲單個令牌。 它可以用於郵政編碼。

5

模式分析器(模式)

該分析器主要處理正則表達式。可以在此分析器中設置像小寫字母,模式,標誌,無用詞的設置。

6

語言分析器

該分析器處理像印第安語,阿拉伯語,荷蘭語等語言。

7

雪球分析器(雪球)

此分析儀使用標準分段器,帶有標準濾波器,小寫字母過濾器,停止過濾器和雪球過濾器。

8

停止分析器(停止)

stopwordsstopwords_path可以配置。 默認情況下,停用詞初始化爲英語停用詞,stopwords_path包含具有停用詞的文本文件的路徑。

9

自定義分析器(自定義)

此分析器用於創建帶有可選令牌過濾器和字符過濾器的令牌化器的定製分析器。可以在此分析器中配置像tokenizerfilterchar_filterposition_increment_gap等設置。

令牌器/標記生成器

令牌器用於從Elasticsearch中的文本生成令牌。 通過考慮空白或其他標點符號,文本可以分解成令牌。 Elasticsearch有大量內置的分詞器,可以在自定義分析器中使用。

編號

標記生成器

描述

1

標準標記生成器(標準)

這是建立在基於語法的標記生成器,以及max_token_length可以配置爲這個標記生成器。

2

邊緣NGram標記生成器(edgeNGram)

可以爲此分詞器設置如:min_grammax_gramtoken_chars的設置。

3

關鍵字標記生成器(關鍵字)

這將生成整個輸入作爲輸出,可以爲此設置buffer_size

4

字母標記生成器

這將捕獲整個單詞,直到遇到一個非字母字符。

5

小寫標記生成器(小寫)

這與標記生成器相同,但是在創建令牌之後,會將它們更改爲小寫。

6

NGram令牌器(nGram)

類似:min_gram(默認值爲1),max_gram(默認值爲2)和token_chars等設置可以爲這個分詞器。

7

空格標記符(空格)

這將根據空格分隔文本。

8

模式分詞器(模式)

這使用正則表達式作爲標記分隔符。可以爲此分詞器設置模式,標誌和組設置。

9

UAX電子郵件URL令牌(uax_url_email)

這使用正則表達式作爲標記分隔符。 可以爲此分詞器設置模式,標誌和組設置。

10

這與標準分詞器工作方式相同,但它將電子郵件和URL作爲單個標記。

11

路徑層次化標記分隔符(path_hierarchy)

此標記器生成輸入目錄路徑中存在的所有可能的路徑。可用於此分詞器的設置是分隔符(默認爲/),replacementbuffer_size(默認爲1024),reverse(默認爲false)和skip(默認爲0)。

12

經典分詞器(經典)

這在基於令牌的語法基礎上工作。可以爲此分詞器設置:max_token_length

13

泰語分詞器(泰語)

此分詞器用於泰語,並使用內置的泰語分詞算法。

令牌過濾器

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

字符過濾器

這些過濾器在分詞器之前處理文本。 字符過濾器查找特殊字符或html標籤或指定的模式,然後刪除或更改爲適當的詞,如’&‘到和,刪除html標記標記。 這裏是同義詞在synonym.txt中指定的分析器的示例 -

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

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