2016-07-19 13 views
0

私はElasticsearchで消費するためのやや動的な構造をマッピングするためのいくつかのポインタを探しています。ネストされた構造の弾性検索マッピング

生の構造自体はjsonですが、構造の一部が静的な構造の外側の要素ではなく、変数を含んでいるという問題があります。多少編集さの例を提供するために、

、私のJSONは次のようになります。

"stat": { 
    "state": "valid", 
    "duration": 5, 
}, 
"12345-abc": { 
    "content_length": 5, 
    "version": 2 
} 
"54321-xyz": { 
    "content_length": 2, 
    "version", 1 
} 

最初のブロックは簡単です。 Elasticsearchは構造の "stat"部分をマッピングする素晴らしい仕事をしています。もし私がそのデータの多くをインデックスにダンプするなら、期待通りに動作します。問題は、次の2つのブロックは本質的に同じものですが、未処理のjsonはユニークな要素が構造に入り込むようにフォーマットされているため、Elasticsearchはデフォルトでこれをマップして、 :

"stat": { 
    "properties": { 
     "state": { 
      "type": "string" 
     }, 
     "duration": { 
      "type": "double" 
     } 
    } 
}, 
"12345-abc": { 
    "properties": { 
     "content_length": { 
      "type": "double" 
     }, 
     "version": { 
      "type": "double" 
     } 
    } 
}, 
"54321-xyz": { 
    "properties": { 
     "content_length": { 
      "type": "double" 
     }, 
     "version": { 
      "type": "double" 
     } 
    } 
} 

私は「CONTENT_LENGTH」データのインデックスすべての能力をみたいが、それは分離なってきて、私はKibanaにデータをドロップする際に使用されている変数名のいくつかと、私は羽目になる本当に長いフィールド名は、無用の横になります。

構造に汎用タグを付けることはできますか?または、これは、ジェネレーション構造の名前を厳密にコーディングし、識別子フィールド名を追加することで、開発者がjson生成段階でより簡単に解決されます。

洞察力/助けを大いに感謝します。

ありがとうございます!

+0

希望の動作がわかりません。あなたが提供したサンプルについて、ESが独自に作成する必要があるマッピングは何でしょうか? –

+0

同じ構造のすべてのデータセットを集めることができるようにしたいが、生のjsonは構造変数名を与える。これはまた、jsonが、引用符で囲まれた数値のような好奇心の問題を抱えていた場合、構造がどのように見えるかわからずにマッピングを上書きすることができないことを意味します。実用的。そのことから、私はますますこれが未加工のjson構造に起因すると考えており、それは以下のajaelesのコメントに従って、変更を加える必要があるところです。 – VirtualGreg

答えて

1

12345-abcのようなキーが生成され、無限の値が生成された場合、いくつかの便利なクエリや集計を行うことは難しくありません。あなたのデータを分析するためにどのようなユースケースを持っているのかははっきりしていませんが、nested objectshttps://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html)を見て、それに応じて入力jsonを生成する必要があります。これらの追加のオブジェクトを、現在のキーを含む特別なフィールドを持つ配列に入れると、より良い集計結果が得られるようです。

{ 
    "stat": ..., 
    "things": [ 
    { 
     "thingkey": "12345-abc", 
     "content_length": 5, 
     "version": 2 
    }, 
    ... 
    ] 
} 
+0

構造体は分散システム内のノードを表しているため、集約が重要であり、我々が同意する通り、そのまま破棄されます。私は入れ子構造をかなりオンラインで見てきましたが、すべてのドキュメントは "stat"の例のように静的に名前が付けられた構造を指しています。私は、私たちがどんな選択肢を持っているかを見るためにjsonを生成する人たちと議論する必要があると思う。あなたの例のように「もの」に総称名が与えられていたとしても、私は、フィルタと用語の制限付きで、木場の特定のエンティティを分離することができました。私の疑惑を確認していただきありがとうございます。 – VirtualGreg

+0

私は時間をかけて物事を遊ばせてきました。構造物のキーから値を外すことで、この提案のように物事が大幅に単純化されました。次の問題は、私がelasticsearchでこのデータを適切に持っていたら、木場はネストされたクエリをサポートしていないように見えます。迅速な返事をお寄せいただきありがとうございます – VirtualGreg

関連する問題