簡體   English   中英

ElasticSearch 查詢 uuid 字段

[英]ElasticSearch query for uuid field

我想查詢 elasticsearch 記錄,其中一個字段包含字符串格式的 uuid 值。 這是記錄結構

{
"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 中提供的字符串匹配,但我想要字段值等於給定值的記錄。

請建議。 謝謝。

你快到了。 您只需要使用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 ,因為您已經在query部分添加了AND

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM