【发布时间】:2021-01-22 14:30:47
【问题描述】:
在 elasticsearch 索引中,我有一个名为 reporter 的字段,运行此查询时没有得到任何结果:
GET /index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "reporter": "Andr" } }
]
}
}
}
但是,如果我将值更改为“Andre”的全名,我会得到很多结果。如何返回 reporter 字段包含“A”、“An”、“And”、“Andr”等的记录?只有当值与电子邮件中句点之间的完整字符串匹配时,我才会得到结果。
以下是分析设置:
{
"analysis": {
"filter": {
"email": {
"type": "pattern_capture",
"preserve_original": true,
"patterns": [
"([^@]+)",
"(\\p{L}+)",
"(\\d+)",
"@(.+)",
"([^-@]+)"
]
}
},
"analyzer": {
"email": {
"tokenizer": "uax_url_email",
"filter": [
"email",
"lowercase",
"unique"
]
}
}
}
}
这是reporter 映射:
"reporter": {
"type": "text",
"analyzer": "email"
}
【问题讨论】:
标签: elasticsearch kibana