1

私は Elastic Search を使い始めており、いくつかの集計をしようとして行き詰っています。基本的に、次の形式のデータで構成されるデータセットがあります。

{
    "name": "The Chef Restaurant",
    "city": "New York",
    "state": "New York",
    "rating": "GOOD",
    "type": "Continental"
}

ここで、いくつかの集計を行い、ニューヨークのすべてのコンチネンタル レストラン、グッド レストラン、レストランを 1 つのクエリで取得したいと考えています。

すべての種類のレストランの数が必要なわけではなく、特定の種類の数だけが必要であることに注意してください。また、これらの集計は相互に独立しています。つまり、私がGOODと言うとき、必ずしもそれがコンチネンタルであることを望んでいるわけではなく、イタリア語でも何でも構いません.

これは私が試したことです:

{
    "size": 0,
    "query": {
        "match_all": {}
    },
    "aggregations": {
        "good_restaurants": {
            "filters": {
                "match": {
                    "rating": "CONTINENTAL"
                }
            }
        },
        "continental_restaurants": {
            "filters": {
                "match": {
                    "type": "CONTINENTAL"
                }
            }
        },
        "restaurants_in_new_york": {
            "filters": {
                "match": {
                    "type": "CONTINENTAL"
                }
            }
        }
    }
}

エラーが表示されます:

{
   "error": {
      "root_cause": [
         {
            "type": "search_parse_exception",
            "reason": "Unknown key for a START_OBJECT in [good_restaurants]: [match].",
            "line": 9,
            "col": 17
         }
      ],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [
         {
            "shard": 0,
            "index": "test_master",
            "node": "-aWy78_mRaaBMcOAeiN9tg",
            "reason": {
               "type": "search_parse_exception",
               "reason": "Unknown key for a START_OBJECT in [good_restaurants]: [match].",
               "line": 9,
               "col": 17
            }
         }
      ]
   },
   "status": 400
}

これは簡単な質問のように思えますが、私は長い間その問題に悩まされてきました。どんな助けでも大歓迎です。

4

1 に答える 1