我已經從Logstash獲取數據,這些數據是以過分的方式進行分析的。本質上,該字段"OS X 10.8"
將被分成"OS"
,"X"
和"10.8"
。我知道我可以更改現有數據的映射和重新索引,但是如何更改默認分析器(在ElasticSearch或LogStash中)以避免將來數據中出現此問題?更改ElasticSearch或LogStash中的默認分析器
具體解決方案:在我第一次向新集羣發送數據之前,我爲該類型創建了一個映射。從IRC
解決方案:創建一個Index Template
我已經從Logstash獲取數據,這些數據是以過分的方式進行分析的。本質上,該字段"OS X 10.8"
將被分成"OS"
,"X"
和"10.8"
。我知道我可以更改現有數據的映射和重新索引,但是如何更改默認分析器(在ElasticSearch或LogStash中)以避免將來數據中出現此問題?更改ElasticSearch或LogStash中的默認分析器
具體解決方案:在我第一次向新集羣發送數據之前,我爲該類型創建了一個映射。從IRC
解決方案:創建一個Index Template
如你所知,elasticsearch使用時沒有明確指定儀標準分析儀。因此,在設置模板時,您可以設置名爲標準的自定義分析器。在那裏你可以設置你自己的設置分析器,標記符,令牌過濾器的規則。
下面是一些有用的鏈接,這將有助於你更好地理解:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis.html
根據該page分析儀可以爲每個查詢指定,每場或每個索引。
在index time
,Elasticsearch將查找分析順序如下:
field mapping
定義的分析。default
的分析器。standard
。在query time
,有幾個更多層:在一個full-text query
定義
search_analyzer
在字段映射中定義。field mapping
中定義。default_search
的分析器。default
的分析器。standard
。在另一方面,這page點重要的東西:
的分析儀下一個合乎邏輯的名義註冊。然後可以從映射定義或某些API中引用它。如果沒有定義,則使用默認值。有一個選項可以定義默認情況下將使用哪些分析儀,但無法派生任何分析儀。
所以,來定義分析儀爲默認值的唯一方法是壓倒一切的pre-defined analyzers之一,在這種情況下,default
分析。 這意味着我們不能爲我們的分析儀使用的任意名稱,它必須被命名爲default
此指標設定一個簡單的例子:
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0,
"analysis": {
"char_filter": {
"charMappings": {
"type": "mapping",
"mappings": [
"\\u200C => "
]
}
},
"filter": {
"persian_stop": {
"type": "stop",
"stopwords_path": "stopwords.txt"
}
},
"analyzer": {
"default": {<--------- analyzer name must be default
"tokenizer": "standard",
"char_filter": [
"charMappings"
],
"filter": [
"lowercase",
"arabic_normalization",
"persian_normalization",
"persian_stop"
]
}
}
}
}
}
作品上'2.4.6',謝謝。另一個答案沒有奏效。 – cahen
@cahen我很高興它可以幫助你。 –