2016-08-05 16 views
0

2番目の一致が失敗した最初のクエリでどのように失敗するのだろうと思います。検索可能ですがフィルタリング可能ではないフィールド

これは、これはあなたが何が不足しているかについての手掛かりを持っていますか

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match": {"registration_references": "impedit-40aa"} 
     }, 
     "filter": {"term": {"is_deleted": false}} 
    } 
    } 
} 

一致する

{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "and": [ 
      { 
      "terms": { 
       "registration_references": ["impedit-40aa"] 
      } 
      }, 
      {"term": {"is_deleted": false}} 
     ] 
     } 
    } 
    } 
} 

一致していませんか?

+1

最初は 'terms'クエリ(すなわち入力が解析されないところ)を使用し、2番目は' match'クエリ(つまり入力が解析される場所)を使用します。おそらく 'registration_references'フィールドは解析された文字列でしょうか? – Val

+2

インピーダンス-40aaは、デフォルトのアナライザによって分離され、正確な値によるフィルタマッチングが妨げられ、検出されません。ちょうどフィルタを使用してインピーダンスで検索しようとすると分かります。フィルターを使用して正確な値に一致させる必要がある場合は、フィールドの分析をnot_analyzedに変更してください。 –

+0

@Val、右。プロブレムは 'registration_references'が分析されることです。 @Waldemar正確。ハイフンなしで動作します。皆さん、ありがとうございました ! –

答えて

0

ありがとうございますValとWaldemar、registration_referencesフィールドが分​​析されます。これは正確な用語一致を破ります。

関連する問題