在Elasticsearch默認分析儀將標記化使用Standard tokenizer,這將標記化a b
術語爲兩個術語:a
和b
,其默認後停止的話令牌濾波器將變成僅僅是單個術語b
。請參閱this play一個小例子,其中顯示瞭如何分析文本。
爲了這一點,你所指定的方式進行分析,我們對我們的分析儀配置爲這樣:
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
BYT因爲Logstash通常會創建新的索引需要的時候,我們必須確保這種分析儀支持所有索引創建時。有兩種方法可以實現:1)將其添加到Elasticsearch實例配置(elasticsearch.yml),或2)創建包含分析器的索引模板。
由於我們只在特定索引(即帶有前綴logstash-
的索引)上需要此分析器。通過使用Index template API,我們可以做到以下幾點:
curl localhost:9200/_template/logstash-id -XPUT -d '{
"template": "logstash-*",
"settings" : {
"analysis": {
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
}
},
"mappings": {
"_default_": {
"properties" : {
"id" : { "type" : "string", "analyzer" : "my_id_analyzer" }
}
}
}
}'
在執行上面的命令後,該模板將適用於任何指數與logstash-
之後創建的前綴,而唯一的「神奇」的部分是添加映射定義,它使用內置類型_default_
,它是給定索引中「any」類型的佔位符。這意味着映射將被添加到任何類型,而不管它的實際類型名稱。