1. ホーム
  2. elasticsearch

[解決済み] エラスティック検索クエリの完全一致

2022-03-01 12:50:19

質問

という文字列と完全に一致させたい。 ":Feed:" の中に message フィールドを作成し、そのようなレコードをすべて1日前にさかのぼって引き出します。私が持っているjsonは、プレーンワードにもマッチするようだ " feed " . どこで間違っているのかわかりません。を追加する必要があるのでしょうか? "constant_score" をこのクエリJSONに追加してください。現在、私が持っているJSONは以下の通りです。

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

解決方法は?

こちらに記載されている通りです。 正確な値を見つける インデックス作成時にフィールドが解析されているため、トークン (":") を正確にマッチングさせる方法がないのです。トークンが検索可能な場合は常にマッピングを "not_analyzed" にし、データを再インデックス化する必要があります。

メッセージフィールド内の ":feed:" のみに簡単にマッチさせたい場合は、":" をトークン化しない解析器を作成し、ワイルドカードの代わりにシンプルな "match" クエリでフィールドをクエリできるようにするとよいでしょう。