弹性条款查询电子邮件不起作用

双唇

我想在Elastic Search Query中传递电子邮件列表,所以我尝试在下面的查询中实现此目的,但未得到任何结果。

{
    "query": {
      "terms": {
        "email": [ "[email protected]", "[email protected]" ]
      }
    }
}

当我使用id而不是电子邮件时,它起作用了!

{
    "query": {
      "terms": {
        "id": [ 43, 67 ]
      }
    }
}

您能否解释一下我的电子邮件查询出了什么问题以及其运作方式

Assael Azran |

如果要将电子邮件地址识别为单个令牌,则应使用uax_url_email令牌生成器。

UAX URL电子邮件令牌生成器

一个工作示例:

对应

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_email_analyzer": {
          "type": "custom",
          "tokenizer": "my_tokenizer",
          "filter": ["lowercase", "stop"]
        }
      },
      "tokenizer": {
        "my_tokenizer":{
          "type": "uax_url_email"
        }
      }
    }
  },
  "mappings": {
      "properties": {
        "email": {
          "type": "text",
          "analyzer": "my_email_analyzer",
          "search_analyzer": "my_email_analyzer",
          "fields": {
            "keyword":{
              "type":"keyword"
            }
          }
        }

    }
  }
}

发布一些文件

POST my_index/_doc/1
{
  "email":"[email protected]"
}

POST my_index/_doc/2
{
  "email":"[email protected]"
}

搜索查询

GET my_index/_search
{
  "query": {
    "multi_match": {
      "query": "[email protected] [email protected]",
      "fields": ["email"]
    }
  }
}

结果

"hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 0.6931472,
    "hits" : [
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.6931472,
        "_source" : {
          "email" : "[email protected]"
        }
      },
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.6931472,
        "_source" : {
          "email" : "[email protected]"
        }
      }
    ]
  }

另一种选择是使用keyword类型。

搜索查询

GET my_index/_search
{
  "query": {
    "terms": {
      "email.keyword": [
        "[email protected]",
        "[email protected]"
      ]
    }
  }
}

我认为使用uax_url_email令牌生成器是更好的解决方案。

希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在弹性搜索中对电子邮件使用自动完成功能不起作用

来自分类Dev

HTML电子邮件不起作用:/

来自分类Dev

蛋糕电子邮件不起作用

来自分类Dev

PHP电子邮件不起作用

来自分类Dev

蛋糕电子邮件不起作用

来自分类Dev

速度电子邮件不起作用

来自分类Dev

基本电子邮件不起作用

来自分类Dev

wp电子商务电子邮件不起作用

来自分类Dev

使用LINQ查询按电子邮件地址过滤数据集不起作用

来自分类Dev

HTML电子邮件<img>不起作用

来自分类Dev

Magento:电子邮件模板中的翻译不起作用

来自分类Dev

HTML电子邮件按钮链接不起作用

来自分类Dev

流星电子邮件不起作用-错误:getaddrinfo ENOTFOUND

来自分类Dev

SGE群集qsub电子邮件通知不起作用

来自分类Dev

Gmail电子邮件标记不起作用

来自分类Dev

sailsjs:模型电子邮件验证似乎不起作用

来自分类Dev

电子邮件验证在MVC中不起作用

来自分类Dev

GitLab电子邮件通知不起作用

来自分类Dev

Django Celery发送注册电子邮件不起作用

来自分类Dev

电子邮件在Linux容器中不起作用

来自分类Dev

美元($)符号在电子邮件模板中不起作用

来自分类Dev

PHP BCC电子邮件不起作用

来自分类Dev

电子邮件中断行不起作用

来自分类Dev

Rails-发送名称不起作用的电子邮件

来自分类Dev

电子邮件换行符不起作用

来自分类Dev

Div样式在Outlook电子邮件中不起作用

来自分类Dev

从gmail阅读电子邮件不起作用

来自分类Dev

HTML电子邮件格式在Outlook中不起作用

来自分类Dev

KEYUP事件上的电子邮件验证不起作用