elasticsearch系統分析器及自定義分析器

2021-07-27 05:56:22 字數 2089 閱讀 9653

一、系統自帶的分析器:

(1)standard 分析器

standard 分析器是用於全文本段的預設分析器。

它考慮了以下幾點:

standard 分詞器,在詞層級上分割輸入的文字。

standard 標記過濾器,被設計用來整理分詞器觸發的所有標記(但是目前什麼都沒做)。

lowercase 標記過濾器,將所有標記轉換為小寫。

stop 標記過濾器,刪除所有可能會造成搜尋歧義的停用詞,如 a,the,and,is。

(2)keyword分析器

(3)whitespace分析器

1.系統自帶的字元過濾器:

(1) html_strip 字元過濾器 來刪除所有的 html 標籤,並且將 html 實體轉換成對應的 unicode 字元,比如將 á 轉成 á。

2.系統自帶的分詞器:

(1)[keyword 分詞器]輸出和它接收到的相同的字串,不做任何分詞處理。

(2)[whitespace 分詞器]只通過空格來分割文字。

(3)[pattern 分詞器]可以通過正規表示式來分割文字

3.系統自帶的標記過濾器:

(1)[lowercase 標記過濾器]

(2)[stop 標記過濾器]

(3)[stemmer 標記過濾器]將單詞轉化為他們的根形態(root form)。

(4)[ascii_folding 標記過濾器]會刪除變音符號,比如從 très 轉為 tres。

(5)[ngram] 和 [edge_ngram]可以讓標記更適合特殊匹配情況或自動完成

二、建立自定義分析器

(可以在 analysis 欄位下配置字元過濾器char_filter,分詞器tokenizer和標記過濾器filter):

分析器 是三個順序執行的元件的結合(字元過濾器,分詞器,標記過濾器)。

--建立自定義分析器的語法格式

put /testindex

, "tokenizer": ,

"filter": ,

"analyzer": }}

}

–demo1:建立了乙個新的分析器es_std,並使用預定義的西班牙語停用詞:

(注:es_std 分析器不是全域性的,它僅僅存在於我們定義的 testindex 索引中)

put /testindex}}

}}

put /testindex

}, "filter": },

"analyzer": }

}}}

三、測試新的分析器:

--demo1:

get testindex/_analyze?analyzer=standard

--demo2:

get testindex/_analyze

--demo3:

get testindex/_analyze

四、給指定字段配置分析器

--demo1:給指定欄位message配置分析器

}}--demo2:

put /testindex}}

}}

}}

五、將分析器應用到索引中

在給目標索引建對映時,指定待分析的字段的分析器來使用我們構造的分析器。如:}}}

查詢時也可以指定分析器。如:

post /testindex/testtable/_search}}}

或者在對映中分別指定他們。如:}}}

然後索引一些文件,使用簡單的 match 查詢檢查一下,如果發現問題,使用 validate

api 檢查一下。如:

post /testindex/testtable/_validate/query?explain

}}

關於elasticsearch在系統架構中的位置

最近由於專案的原因,開始接觸到es。在使用和學習的過程中,不斷的產生著各種疑問讓我略顯迷茫。所以開始撰寫這篇部落格來記錄和推進自己對elasticsearch的學習。就現在而言,題目可能起的有點過於大。對於還並不算合格的程式設計師的我來說,談架構還為時尚早。但我希望在這篇文章終結的時候,自己能夠成長...

elasticsearch配置詳解

elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...

誰在使用Elasticsearch

github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...