在 AWS Open 搜索中搜索电子邮件

问题描述 投票:0回答:1

我正在 AWS OpenSearch 实例中推送大量数据,以轻松搜索各种字符串。我推送的数据是一个 json 记录,其中包含一些属性,例如电子邮件、电话、姓名。

我遇到的问题是我无法使用电子邮件地址进行正常搜索。我需要在所有字段中搜索(因为我的搜索参数是通用的,它基本上来自输入)。所以我决定使用如下所示的 multi_match:

GET _search
{
  "query": {
    "multi_match": {
      "query": "name@host",
      "fields": ["*"]
    }
  }
  , "_source": "{_id}"
}

上面的方法似乎不起作用,很可能是因为“at”符号。如果我在查询中仅搜索“姓名”,则会得到一次命中。如果我搜索“name@host”(完全匹配),我会得到数千次点击。就好像“at”符号的作用就像一个分词器,结果包含“name”的命中和“host”的命中。我通过搜索“name@hostxx”确认了这一点,结果只找到了 1 个命中,即正确的命中。

有谁知道如何配置搜索以使用该值作为精确搜索?或者也许转义@符号不被解释为标记器?

tokenize opensearch amazon-opensearch
1个回答
0
投票

我设法找到了解决方案,那就是不在字段本身内进行搜索(该字段在内部由 OpenSearch 分成多个较小的部分进行标记),而是搜索关键字。搜索关键字基本上是精确搜索(这就是我需要的),而且速度也快得多。

© www.soinside.com 2019 - 2024. All rights reserved.