gpt4 book ai didi

elasticsearch - Elasticsearch 标记我的查询字符串(电子邮件地址)。怎么阻止呢?

转载 作者:行者123 更新时间:2023-12-02 22:46:47 32 4
gpt4 key购买 nike

我的类型是用户:电子邮件和用户名。

电子邮件字段设置为字符串类型,并使用自定义分析器“exact_lower”:

index.analysis.analyzer.exact_lower:
type: custom
tokenizer: keyword
filter : lowercase

问题是当我搜索完整的电子邮件地址时,它返回匹配项,就好像“@”是空格一样。我认为是因为它标记了搜索。

我发送的查询:

{
"query" : {
"query_string" : {
"query" : "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1e7f7a7377705e7b667f736e727b307d7173" rel="noreferrer noopener nofollow">[email protected]</a>"
}
}
}

它返回任何与“admin”或“example.com”匹配的内容。例如。 [email protected] , [email protected] ,和 [email protected] 。我希望它只返回 [email protected] ...

我认为我需要告诉搜索不要标记 query_string,但一直无法弄清楚如何做到这一点。

非常感谢任何帮助!谢谢,赛斯

最佳答案

就像这样,因为 query_string 使用 _all 字段作为默认搜索字段。该领域有自己的分析器。

email 字段定义分析器并不会将相同的分析器应用于 _all 字段。有关 _all 的更多详细信息,您可以找到 here .

为了完全匹配电子邮件地址,我建议使用不同的查询:

{
"query": {
"term": {
"email": {
"value": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4223262f2b2c02273a232f322e276c212d2f" rel="noreferrer noopener nofollow">[email protected]</a>"
}
}
}
}

或使用query_string,但引用特定字段:

{
"query": {
"query_string": {
"query": "email:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bfdedbd2d6d1ffdac7ded2cfd3da91dcd0d2" rel="noreferrer noopener nofollow">[email protected]</a>"
}
}
}

关于elasticsearch - Elasticsearch 标记我的查询字符串(电子邮件地址)。怎么阻止呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224640/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com