我為 Elasticsearch 創建了自定義分析器,它按預期作業,但是我無法將其設定為索引的默認分析器。我只能為每個欄位單獨設定它,但將它作為默認值對我來說很重要,因為索引映射可能會隨著時間的推移而改變,我想避免必須記住為每個新欄位設定分析器。
我用于創建索引的 Json 內容:
{
"settings": {
"analysis": {
"char_filter": {
"my_mappings_char_filter": {
"type": "mapping",
"mappings": [
"- => ?h?",
],
}
},
"analyzer": {
"test_analyzer": {
"tokenizer": "whitespace",
"char_filter": ["my_mappings_char_filter"],
"filter": ["lowercase"]
},
"default": {
"type": "test_analyzer"
}
},
}
},
}
回應如下(狀態 400)
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Unknown analyzer type [test_analyzer] for [default]"
}
],
"type": "illegal_argument_exception",
"reason": "Unknown analyzer type [test_analyzer] for [default]"
},
"status": 400
}
我正在遵循官方彈性檔案中的這些說明,但由于某種原因,它在我的情況下會引發錯誤?或者也許不可能將自定義分析器作為默認值?
uj5u.com熱心網友回復:
default分析器設定不是對現有分析器(內置分析器除外)的參考,而是對其自身的完整定義。這將起作用:
{
"settings": {
"analysis": {
"char_filter": {
"my_mappings_char_filter": {
"type": "mapping",
"mappings": [
"- => ?h?"
]
}
},
"analyzer": {
"default": {
"type": "custom",
"tokenizer": "whitespace",
"char_filter": [
"my_mappings_char_filter"
],
"filter": [
"lowercase"
]
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505625.html
標籤:弹性搜索
