0

ドキュメントごとに異なる属性を保存してクエリしたい。このようなもの:

JSON:

{
    name: "doc1",
    metadata: [
        { color: "red" },
        { data: [ "value1", "value2", "value3" ] },
        { size: 500 },
        { avail: true },
    ]
},
...
{
    name: "doc4980",
    metadata: [
        { otherValues: [ 55, 33 ] },
        { important: true },
    ]
}

キーと値は、新しい属性が必要になるたびにユーザーによって定義されるため、多くのドキュメントでは異なります。

次の構造 (2 番目のオブジェクトのみの例) は、これを elasticsearch に格納するのに最適ですか? (属性名の代わりに、属性を追加したユーザーなどの詳細を参照できるmongodb IDを使用したい)

"_source" : {
    "name": "doc4980",
    "metadata":[
        {
            k: "51d69d8f0c62690000000011", 
            v: [ 55, 33 ]
        },
        {
            k: "51d69d8f0c62690000000016", 
            v: true
        }
    ]
}

クロス オブジェクトの一致を避けるために、次のマッピングを使用します。

{
    "my_type" : {
        "properties" : {
            "metadata" : {             
                "type" : "nested"            
            }, 
        }
    } 
}
4

0 に答える 0