我的 flex 搜索数据库中有一个loginid字段,其中包含用户电子邮件ID。我想编写一个搜索查询来列出所有发生的特定邮件客户端(例如gmail.com,yahoo.com等)。
我设法写了一个与电子邮件ID完全匹配的搜索查询
{
"query": {
"match": {
"loginid": "[email protected]"
}
}
}
通过执行以上查询,我将获得完全匹配。我的要求是匹配所有以'@ amt.in'结尾的电子邮件ID。
loginid是我的 flex 搜索数据库中的一个非分析字段,即
"loginid": {
"type": "string",
"index": "not_analyzed"
}
我也尝试过parse_prefix查询
{
"query": {
"match": {
"loginid": {
"query": "[email protected]",
"type": "phrase_prefix"
}
}
}
}
但是没有运气能得到我想要的结果。请帮助我找到解决方案。谢谢
最佳答案
{
"regexp":{
"loginid": "*@amt.in"
}
}
使用 flex 搜索正则表达式查询可实现此目的。
关于elasticsearch - Elasticsearch not_analyzed字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24094258/