當(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 | 停止分析器(停止) | stopwords 和stopwords_path 可以配置。 默認(rèn)情況下,停用詞初始化為英語停用詞,stopwords_path 包含具有停用詞的文本文件的路徑。 |
9 | 自定義分析器(自定義) | 此分析器用于創(chuàng)建帶有可選令牌過濾器和字符過濾器的令牌化器的定制分析器。可以在此分析器中配置像tokenizer ,filter ,char_filter 和position_increment_gap 等設(shè)置。 |
令牌器用于從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"
}
}
}
}
}
}