我的 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/

10-09 04:19