我目前遇到了无法在日志中搜索UUID的问题。例如,我有一个字段名“log”,但其中有一个完整的日志,例如:
"log": "time=\"2022-10-10T07:46:00Z\" level=info msg=\"message to endpoint (outgoing)\" message=\"{8503fb5a-3899-4305-8480-6ddc0f5df296 2022-10-10T09:45:59+02:00}\"\n",
我想得到这个日志在ElasticSearch,并通过 Postman 我发送这个:
{
"query": {
"match": {
"log": {
"analyzer": "whitespace",
"query": "8503fb5a-3899-4305-8480-6ddc0f5df296"
}
}
},
"size": 50,
"from": 0
}
我得到的回应是:
{
"took": 930,
"timed_out": false,
"num_reduce_phases": 2,
"_shards": {
"total": 581,
"successful": 581,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": []
}
}
但是当我单独搜索“8503fb5a”时,我得到了想要的结果。这意味着破折号仍然会导致问题,但我认为使用空格分析器应该可以解决这个问题?我做错了什么吗?
这些是我的领域。
1条答案
按热度按时间crcmnpdw1#
您不需要使用
whitespace
分析仪。您有两个选项可搜索整个UUID。
首先,您可以使用
match
查询,并将operator
设置为and
:第二,您可以使用
match_phrase
查询,它将搜索完全匹配。