2013-06-07 4 views
5

にダッシュで文字列全体にマッチする、フィールドデータ自体は含まれています - (ダッシュ)、文字列データがあるのGUID 私は適切に一致しようとしていますelasticsearchクエリを持ってelasticsearch

それがあったので、それが適切に一致していなかった

分割された別々の単語に用語を分割 -

私は以来、このようなmatch_phraseクエリを使用するクエリを変更しました:

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

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

私はちょうど1 GUIDを一致させるためにしようとしていた場合、これはうまく動作します。

は私が複数のGUIDに

に一致するようにしようとしていますので、それが現在

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

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

のように見えますが、私は、その別途文字列全体ではなく、それぞれのGUIDと一致しようとしているので、そのが動作していないと仮定します。

"analyzer": "whitespace"をクエリに追加しようとしましたが、これによってクエリが完全に壊れました。

これで、GUID文字列全体を検索して複数のGUIDを照合できるようにするには、どのような方法が最適ですか?

答えて

4

同様の目的で、フィールドマッピングをnot_analyzedに設定しました。

"guid" : { 
     "type" : "string", 
     "index" : "not_analyzed" 
    } 

クエリを手動で作成してから作業します。

{ 
    "bool" : { 
     "should" : [ 
      { 
       "term" : { "guid" : "bd2acb42-cf01-11e2-ba92-12313916f4be" } 
      }, 
      { 
       "term" : { "guid" : "d1091f08-ceff-11e2-ba92-12313916f4be" } 
      } 
     ], 
     "minimum_number_should_match" : 1 
    } 
} 
関連する問題