0

次の SQL スキーマを検討してください。

ここに画像の説明を入力

Table_2 と Table_1 には多対多の関係があります

今、table_2 からすべてのデータを取得するエラスティック検索リバーを作成しようとしていますが、id だけでなく、table_1 からの行も必要です。

これが私のSQLになると私が信じているものです:

select t2.*, t1.Name from [Table_2] t2
join [Table_3] t3 on t2.ID = t3.table_2
join [Table_1] t1 on t1.ID = t3.table_1

これを行った後、Table_3 の関係ごとに IE が重複する行を取得することに気付きました。

これは私が今エラスティックで得ているものです

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 1,
        "hits": [
            {
                "_index": "test_relation",
                "_type": "relation",
                "_id": "AUpUGlvaRCP4Gzd2p3K4",
                "_score": 1,
                "_source": {
                    "Name": [
                        "table_2test",
                        "Test1"
                    ],
                    "ID": 1
                }
            },
            {
                "_index": "test_relation",
                "_type": "relation",
                "_id": "AUpUGlvaRCP4Gzd2p3K5",
                "_score": 1,
                "_source": {
                    "Name": [
                        "table_2test",
                        "Test2"
                    ],
                    "ID": 1
                }
            }
        ]
    }
}

しかし、代わりに次のようにしたい:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "test_relation",
                "_type": "relation",
                "_id": "AUpUGlvaRCP4Gzd2p3K4",
                "_score": 1,
                "_source": {
                    "Name": [
                        "table_2test",
                    ],
                    Table_1 :[
                        {"Name": "Test1", "ID": "1"},
                        {"Name": "Test2", "ID": "2"}
                    ]
                    "ID": 1
                }
            }
        ]
    }
}

SQLにelasticsearch Riverを使用することで逃げたいと思っていましたが、この種のクエリが許可されるかどうかはわかりません。

4

0 に答える 0