2016-06-18 12 views
2

":Feed:"の文字列をmessageフィールドに正確に一致させて、そのようなすべてのレコードを1日前に戻したいとします。私が持っているjsonは、普通の単語" feed "にもマッチしているようです。私はどこに間違っているのか分からない。このクエリにJSONを追加する必要がありますか?"constant_score"以下に示すように、私が現在持っているJSONは次のとおりです。弾性検索クエリで正確に一致する

{ 
    "query": { 
     "bool": { 
      "must": { 
       "query_string": { 
        "fields": ["message"], 
        "query": "\\:Feed\\:" 
       } 
      }, 
      "must": { 
       "range": { 
        "timestamp": { 
         "gte": "now-1d", 
         "lte": "now" 
        } 
       } 
      } 
     } 
    } 
} 
+0

入力のために、 – keety

+0

マッピングの{index: "not_analyzed"}にメッセージを設定してみてください。私は残念なことにインデックスを変更する権限がありません。フィールドが "not_analyzed"の場合は、* \\:Feed \\:* 'のようなものを探しているはずです。私は運が尽きているように見える。 – Dhanesh

答えて

3

ここに述べたように:Finding Exact Values、インデックス付けするとき、フィールドが分​​析されていますので、 - あなたは、正確なマッチングのトークン(「:」)の方法がありません。トークンを検索可能にする必要があるときはいつでも、マッピングは「not_analyzed」であり、データを再索引付けする必要があります。

メッセージフィールド内の ":feed:"だけを簡単に一致させたい場合、 ":"をトークン化していないアナライザを懐疑的にしたいかもしれないので、シンプルでフィールドを照会することができます"一致"クエリは、野生の文字の代わりに。

関連する問題