一、系統自帶的分析器:
(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個客戶端節點 負責處理搜尋請求...