【问题标题】:Elastic Search query for email电子邮件的弹性搜索查询
【发布时间】:2017-11-15 05:39:12
【问题描述】:

我正在尝试使用 ElasticSearch 实现电子邮件搜索。
以下是示例文档。

{
  ...  
  "email": "valeri@gmail.com" 
},
{
  ...
  "email": "tom@gmail.com"
}

所以当我使用匹配查询时:{ "match": { "email": "valeri@gmail.com" } }
我得到了"valeri@gmail.com""tom@gmail.com",但结果必须只有"valeri@gmail.com"

我认为是因为@ 字符。
有什么好的办法可以解决这个问题吗?

【问题讨论】:

标签: javascript node.js elasticsearch


【解决方案1】:

【讨论】:

  • 我们如何使用javascript(Node.js elasticsearch npm模块)定义自定义分析器?
  • @Valeri 您可以将自定义分析器定义为 client.indices.create({ index: "wcm-posts", body: { "settings": { "analysis": { "analyzer": { " my_analyzer": { "tokenizer": "my_tokenizer" } }, "tokenizer": { "my_tokenizer": { "type": "uax_url_email", "max_token_length": 5 } } } }, "mappings": { "aType" :{“属性”:{“电子邮件”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”},“电子邮件”:{“类型”:“文本” ", "分析器": "my_analyzer" } }, "include_in_all": 真 } } } } } })
【解决方案2】:

用这个来提出你的要求?

GET my_index/_search
{
    "query": {
        "match_phrase_prefix" : {
            "email": "valery@gmail.com"
        }
    }
}

你会得到预期的结果

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多