我已经阅读了以前版本的 ES (< 2),其中“token_analyzer”键需要更改为“analyzer”。但无论我做什么,我仍然收到此错误:
"type": "mapper_parsing_exception",
"reason": "analyzer on field [email] must be set when search_analyzer is set"
Run Code Online (Sandbox Code Playgroud)
这是我在收到错误时通过 PUT 函数传递给 ES 的内容:
{
"settings": {
"analysis": {
"analyzer": {
"my_email_analyzer": {
"type": "custom",
"tokenizer": "uax_url_email",
"filter": ["lowercase", "stop"]
}
}
}
},
"mappings" : {
"uuser": {
"properties": {
"email": {
"type": "text",
"search_analyzer": "my_email_analyzer",
"fields": {
"email": {
"type": "text",
"analyzer": "my_email_analyzer"
}
}
},
"facebookId": {
"type": "text"
},
"name": {
"type": "text"
},
"profileImageUrl": {
"type": "text"
},
"signupDate": {
"type": "date"
},
"username": {
"type": "text"
}
,
"phoneNumber": {
"type": "text"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法有什么问题?
因为您已为该字段指定了search_analyzer,您还必须指定在索引时使用的分析器。例如,在您指定 search_analyzer 的位置下添加以下行:
"analyzer": "standard",
Run Code Online (Sandbox Code Playgroud)
给你这个:
{
"settings": {
"analysis": {
"analyzer": {
"my_email_analyzer": {
"type": "custom",
"tokenizer": "uax_url_email",
"filter": ["lowercase", "stop"]
}
}
}
},
"mappings" : {
"uuser": {
"properties": {
"email": {
"type": "text",
"search_analyzer": "my_email_analyzer",
"analyzer": "standard",
"fields": {
"email": {
"type": "text",
"analyzer": "my_email_analyzer"
}
}
},
"facebookId": {
"type": "text"
},
"name": {
"type": "text"
},
"profileImageUrl": {
"type": "text"
},
"signupDate": {
"type": "date"
},
"username": {
"type": "text"
}
,
"phoneNumber": {
"type": "text"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
另见:https : //www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |