我目前遇到無法在日志中搜索 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",
我想在彈性搜索中獲取此日志,并通過郵遞員發送:
{
"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”時,我得到了想要的結果。這意味著破折號仍然會導致問題,但我認為使用空白分析器應該可以解決這個問題?難道我做錯了什么?
這些是我擁有的領域。

uj5u.com熱心網友回復:
您不需要使用whitespace分析儀。
您有 2 個選項來搜索整個 UUID。
首先,您可以使用設定為的match查詢:operatorand
{
"query": {
"match": {
"log":{
"query": "8503fb5a-3899-4305-8480-6ddc0f5df296",
"operator": "and"
}
}
}
}
其次,您可以使用match_phrase查詢來搜索完全匹配。
{
"query": {
"match_phrase": {
"log": "8503fb5a-3899-4305-8480-6ddc0f5df296"
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/513909.html
標籤:弹性搜索
