2017-03-13 4 views
2

mongoDBデータベースからKibanaでダッシュボードをセットアップしようとすると、問題が発生します。Mongodb複合インデックスからKibana elasticsearch

複合インデックスで問題が発生します。私は、複合インデックスでMongoDBの中のコレクションを持っている:私はMongoDBのドキュメントの_idフィールド内の日付を使用してKibanaダッシュボードを生成しようとしています

sale : {"_id" : {"date" : Date, 
       "country" : String, 
       "game_id" : String }, 
     "field_1" : String, 
     "field_n" : String} 

木場からmongoDBデータベースにアクセスするには、mongo-connector elastic2を使用しました。すべてのフィールドがきばらとドキュメントで正しく表示されるため、すべてが動作するようです。しかし、_idは解釈されず、3つのフィールドの代わりに文字列として表示されます。

_id:{'game_id': 'com.id.game', 'date': datetime.datetime(2016, 6, 22, 0, 0), 'country': 'DZ'} 

私がしたいことは、Kibanaは_idがStringではないことを知っているようにすることですそれがString(game_id)、日付(日付)および文字列(国)で、私のように日付フィールドを使用してみましょう私は今まで成功していませんでした。

どのようにすればよいのですか? ありがとうございます。

+0

_idは、文書のIDのキーを予約されています。 ESでは、このフィールドのjsonオブジェクトではなく、文字列型の整数型を許可します。 – user3775217

+0

私はそれを知っています、なぜ私は日付、国、game_idの構造を平易な文字列で変換しますが、フィールド(日付、国、game_id)を返すにはどうしたらいいですか? – bracana

+0

_idフィールドを弾力性のある他のフィールドに追加します。私の答えを確認してください – user3775217

答えて

2

弾性_idの公式documentationによると、各タイプの固有の識別子を表す各タイプのキーワードは予約済みです。 _idex、_type、_uidと一緒に_idは、タイプとしてmeta-fieldsです。

_id jsonオブジェクトを保持したい場合は、mongoのこの_idを弾性の新しいフィールドにマップできます。のようなモンゴー弾性ネームスペースの設定を使用します。

{ 
    "namespaces": { 
    "include": ["document_type._id"], 
    "mapping": { 
     "document_type._id": "document_type.mongo_id" 
    } 
    } 
} 

またはコマンド

-n company.employees -g company.new_employeesなどのおかげで

+0

あなたの答えをありがとう、私はあなたのソリューションを試してみましたが、そこに2つのコメントがあります: - それはバージョン2.5.0から非難されるようです。 "名前空間"::{ \t \t " ._id":{ "名前の変更": - は私は、のようなものは、それがv.2.5.0以降あるべき姿で試してみました "。 mongo_id」 } \t} しかし、私はそれを動作させることができませんでしたが、それは非常に – bracana

+0

うん、私は昨年弾性償却川のプラグインとその支援いつか覚えありがとう、フィールドのコレクションの名前を変更ではなく、ために動作します。私は後で別の解決策を提案しようとします。おかげで – user3775217

+1

ありがとう、私は解決策に似た何かを達成した、elastic2-doc-managerを変更することです、それは大きな問題ではありませんが、私は本当に良い解決策を探しています。 – bracana

関連する問題