テキスト フィールド (「本文」) を検索し、提供する 2 つの複数単語フレーズ (つまり、「スタック オーバーフロー」または「スタック オーバーフロー」) の少なくとも 1 つに一致するアイテムを返す Elasticsearch クエリを実行しようとしています。また、特定のタイムスタンプの後に発生した結果のみをクエリで提供し、結果を時間順に並べたいと思います。
私の現在の解決策は以下です。MUST は正しく機能していると思いますが (gte タイムスタンプ)、2 つの match_phrases を持つ BOOL + SHOULD は正しくありません。次のエラーが表示されます。
Unexpected character ('{' (code 123)): was expecting double-quote to start field name
そこに 2 つの match_phrases があるためだと思いますか?
これは ES マッピングであり、私が使用している ES API の詳細はこちらです。
{"query":
{"bool":
{"should":
[{"match_phrase":
{"body":"a+phrase"}
},
{"match_phrase":
{"body":"another+phrase"}
}
]
},
{"bool":
{"must":
[{"range":
{"created_at:
{"gte":"thispage"}
}
}
]}
}
},"size":10000,
"sort":"created_at"
}