個人Elasticsearch系列文章,逐漸更新中,歡迎關注
0A.關於Elasticsearch及實例應用
00.Solr與ElasticSearch對比
01.ElasticSearch能作什麼?
02.Elastic Stack功能介紹
03.如何安裝與設置Elasticsearch API
04.若是經過elasticsearch的head插件創建索引_CRUD操做
05.Elasticsearch多個實例和head plugin使用介紹
06.當Elasticsearch進行文檔索引時,它是如何工做的?
07.Elasticsearch中的映射方式—簡潔版教程
08.Elasticsearch中的分析和分析器應用方式
09.Elasticsearch中構建自定義分析器
10.Kibana科普-做爲Elasticsearhc開發工具html
另外Elasticsearch入門,我強烈推薦Elasticsearch基礎入門教程給你,很是想盡的入門指南手冊。segmentfault
介紹
在此階段的上一篇博客中,我已經解釋了有關常規分析器結構和組件的更多信息。我也解釋了每一個組件的功能。在此博客中,咱們將經過構建自定義分析器,而後查詢並查看差別來了解實現方面。
定製分析儀的外殼
所以,讓咱們考慮定製分析儀的狀況。假設咱們輸入到Elasticsearch的文本包含如下內容app
html標籤在索引時可能會出如今咱們的文本中,其實這在大多數狀況下是不須要的。因此咱們須要刪除這些。
2.中止詞
像the,and,or等這樣的詞,在搜索內容時意義不大,通常被稱爲中止詞。
3.大寫字母。
4.簡寫形式如H2O、$、%
。
在某些狀況下,像這樣的簡式應該用英文原詞代替。curl
應用自定義分析器
在上面的示例文本中,下表列出了須要執行的操做以及自定義分析器的相應組件elasticsearch
Arun has 100 $ which accounts to 3 % of the total <h2> money </h2>
「 settings」中的層次結構以下所示:工具
應用全部組件
如今應用上述全部組件建立一個自定義分析器,以下所示:開發工具
curl -XPUT localhost:9200/testindex_0204 -d '{ "settings": { "analysis": { "char_filter": { "subsitute": { "type": "mapping", "mappings": [ "$=> dollar", "%=> percentage" ] }, "html-strip": { "type": "html_strip" } }, "tokenizer": "standard", "filter": { "stopwords_removal": { "type": "stop", "stopwords": [ "has", "which", "to", "of", "the" ] } }, "analyzer": { "custom_analyzer_type_01": { "type": "custom", "char_filter": [ "subsitute", "html_strip" ], "tokenizer": "standard", "filter": [ "stopwords_removal", "lowercase" ] } } } }, "mappings": { "test_type": { "properties": { "text": { "type": "string", "analyzer": "custom_analyzer_type_01" } } } } }'
這將使用名爲「 custom_analyzer_01」 的自定義分析器建立索引。
詳細說明了此映射,下圖說明了每一個部分:
使用自定義分析器生成令牌
使用分析器能夠看到使用此分析器生成的令牌,以下所示:url
curl -XGET "localhost:9200/testindex_0204/_analyze?analyzer=custom_analyzer_type_01&pretty=true" -d 'Arun has 100 $ which accounts to 3 % of the total <h2> money </h2>'
令牌列表以下:
在這裏您能夠進行一些觀察:
令牌號3和6最初是$ 和%,但隨後如本節中所指定的那樣被替換爲「 dollar」和「 percentage」 char_filter 。
還有html標記<h2> ,</h2>
也被html_strip 過濾器從令牌列表中刪除
過濾器 "to","the","which","has"中提到的術語等stopwords 已從令牌列表中刪除。令牌編號1最初看起來應該像是「 Arun」,但已被應用的過濾器小寫。spa
結論
在此博客中,咱們看到了如何構建自定義分析器並將其應用於Elasticsearch中的字段。經過這個博客,我打算結束博客系列的第二階段(索引,映射和分析)。從如今開始,此階段是理解Elasticsearch的基礎部分之一,咱們可能會將此階段的輸入用於許多目的。從階段03開始,我將向您介紹elasticsearch的查詢DSL世界。插件