我想查詢其中一個欄位包含字串格式的 uuid 值的 elasticsearch 記錄。這是記錄結構
{
"field1": "test 1",
"field2": "testing 1",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0"
},
{
"field1": "test 2",
"field2": "testing 2",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0.d0644d62-f079-46ee-ab98-30d8d16977c2"
}
我的查詢看起來像這樣
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
這是 field3 的映射
"field3": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
問題是當我運行此查詢時,elasticsearch 正在發送兩條記錄。我只想獲取第一條記錄。這里elasticsearch匹配field3中提供的字串,但我想要欄位值等于給定值的記錄。
請建議。謝謝。
uj5u.com熱心網友回復:
你快到了。您只需要使用field3.keyword而不是field3. 這使用關鍵字分析器而不是標準分析器(注意 field3 欄位后的“.keyword”)。
將您的搜索查詢修改為
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3.keyword:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
此外,您可以default_operator從搜索查詢中洗掉,因為您已經添加AND到query部件中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383814.html
