2013-06-07 43 views
5

yılında tire ile tüm dizeyi eşleşen, saha verileri içeren e - (çizgiler) dize verilerdir GUIDs Ben düzgün maç için çalışıyorum bir elasticsearch sorgusu sahip elasticsearch

öyleydi çünkü düzgün eşleşen değildi

sadece bir GUID'lerini maç için çalışıyorum
"query": { 
    "filtered": { 
      "query": { 
       "match_phrase":{ 

        "guid":{"operator" : "or","query":"bd2acb42-cf01-11e2-ba92-12313916f4be"} 
       } 
      } 
    } 
} 

, bu sadece çalışıyor: - tarafından bölünmüş ayrı kelimelere kadar terimini bölme

ben beri böyle bir match_phrase sorgusu kullanmak için sorguyu değişti .

Birden GUIDs

maç için çalışıyorum Bu yüzden onun ayrı ayrı GUID tüm dizeyi maç çalışıyor değil çünkü onun çalışmıyor varsayalım

"query": { 
    "filtered": { 
      "query": { 
       "match_phrase":{ 

        "guid":{"operator" : "or","query":"bd2acb42-cf01-11e2-ba92-12313916f4be d1091f08-ceff-11e2-ba92-12313916f4be"} 
       } 
      } 
    } 
} 

gibi şu anda görünüyor Ancak.

Sorguya "analyzer": "whitespace" ekledim, ancak bu sorguyu tamamen kırdı.

Sorgunun tüm GUID dizesini aradığını ve birden çok GUID'nin eşleşmesini sağladığından emin olmanın en iyi yöntemi nedir?

cevap

4

Alan eşlemesini benzer amaçlarla not_analyzed olarak ayarlıyorum. Sorguyu el ile oluşturma sonra çalışır.

{ 
    "bool" : { 
     "should" : [ 
      { 
       "term" : { "guid" : "bd2acb42-cf01-11e2-ba92-12313916f4be" } 
      }, 
      { 
       "term" : { "guid" : "d1091f08-ceff-11e2-ba92-12313916f4be" } 
      } 
     ], 
     "minimum_number_should_match" : 1 
    } 
}