1. ホーム
  2. elasticsearch

複数フィールドによるマッチングを行うクエリ

2023-09-02 19:40:58

質問

エラスティックサーチの初心者ですが、2つのフィールドに関係するクエリを書きたいと思っています。つまり、フィールドのコンテンツが指定された部分文字列を含むということです。私はこのようなフィールドを含む文書を持っています。

name: n
tag: t

これを試してみました。

/_search -d '
{
    "query": {
        "match": {
             "name": "n",
             "tag": "t"
        }
    }
}

しかし、このクエリの結果は以下のようなエラーになります。

[match] クエリは簡略化された形で解析され、フィールド名は直接指定されましたが、フィールド名以外のオプションも含まれていました。 フィールド名以外のオプションが含まれています。 オプション'フォームを'クエリ'要素で使用することができますか?

elasticsearchでこれを行う方法はありますか?

どのように解決するのですか?

2つの match で囲まれたクエリが必要です。 bool/must クエリで、このように

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "n"
          }
        },
        {
          "match": {
            "tag": "t"
          }
        }
      ]
    }
  }
}