我已经使用ES几天了,当我执行搜索查询时有一个奇怪的行为,我确定我丢失了一些东西,并且与ES问题无关。我已经在数据库中创建了一些用于测试目的的电子邮件地址,我需要找到的其中一个是"feaviera3a3e@veistzvmldsvjio.com"
,以某种方式,当我键入"veistzvmldsvjio.com"
时,我会得到结果,但是当我键入
“ veistzvmldsvjio”(不带.com)未找到结果。
这是我的代码:
query: {
"multi_match" : {
"query" : "veistzvmldsvjio",
"fields" : [ "email","name","phone","username" ]
}
}
我想我做错了什么,但无法弄清楚是什么。您有任何线索或建议我在这里错过什么吗?
Thx
答案 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" ]
}
}