假设在字段“email”下存储了五个电子邮件地址:
1. {"email": "john_1@gmail.com"}
2. {"email": "john_2@gmail.com"}
3. {"email": "john_3@outlook.com"}
4. {"email": "john_4@outlook.com}
5. {"email": "john_5@yahoo.com"}
当我尝试用完整的电子邮件地址搜索时,我得到了正确的结果。如果我尝试用部分电子邮件搜索,我没有得到任何结果。
例如,如果我尝试只搜索joh
或john_
,但是如果我尝试搜索john_1,我可以得到结果。在这种情况下如何得到通配符结果。
PUT /test
{
"settings": {
"analysis": {
"filter": {
"email": {
"type": "pattern_capture",
"preserve_original": 1,
"patterns": [
"([^@]+)",
"(\\p{L}+)",
"(\\d+)",
"@(.+)",
"([^-@]+)"
]
}
},
"analyzer": {
"email": {
"tokenizer": "uax_url_email",
"filter": [
"email",
"lowercase",
"unique"
]
}
}
}
},
"mappings": {
"emails": {
"properties": {
"email": {
"type": "string",
"analyzer": "email",
"search_analyzer": "standard",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
}
1条答案
按热度按时间8aqjt8rx1#
尝试使用通配符查询。
示例: