用Elasticsearch搜索麻烦

时间:2018-08-09 15:49:37

标签: elasticsearch

我已经使用ES几天了,当我执行搜索查询时有一个奇怪的行为,我确定我丢失了一些东西,并且与ES问题无关。我已经在数据库中创建了一些用于测试目的的电子邮件地址,我需要找到的其中一个是"feaviera3a3e@veistzvmldsvjio.com",以某种方式,当我键入"veistzvmldsvjio.com"时,我会得到结果,但是当我键入

时,
  

“ veistzvmldsvjio”(不带.com)未找到结果。

这是我的代码:

query: {
 "multi_match" : {
       "query"  : "veistzvmldsvjio",
       "fields" : [ "email","name","phone","username" ]
 }
}

我想我做错了什么,但无法弄清楚是什么。您有任何线索或建议我在这里错过什么吗?

Thx

2 个答案:

答案 0 :(得分:1)

您可以检查es的分析,例如:

curl --request GET   --url 'http://localhost:9200/test/_analyze?text=feaviera3a3e%40veistzvmldsvjio.com' \

结果:

{
    "tokens": [{
        "token": "feaviera3a3e",
        "start_offset": 0,
        "end_offset": 12,
        "type": "<ALPHANUM>",
        "position": 0
    }, {
        "token": "veistzvmldsvjio.com",
        "start_offset": 13,
        "end_offset": 32,
        "type": "<ALPHANUM>",
        "position": 1
    }]
}

因此,使用匹配查询“ veistzvmldsvjio”,没有结果。

答案 1 :(得分:0)

我找到了答案,并且有效:

"query_string" : {
                "query":    "*whatever*",
                "fields": [ "email","name","phone","email" ]
              }
            }