2017-06-20 10 views
1

最近私はElasticsearchで働いていますが、私はそれを解決する方法がわからない問題を抱えています。elasticsearchでオブジェクトとその参照を使用してJsonオブジェクトをインデックスする方法はありますか?

私は、JSONのように持っている:私は保存(またはインデックスと呼ばれる)にしようとしたとき

{ 
    "objects": [ 
    "object1": { 
    "id" : "12345", 
    "name":"abc" 
    }, 
    "12345" 
    ] 
} 

Object2には、オブジェクト1の基準となる弾性検索に、それは言う:

「org.elasticsearch。 index.mapper.MapperParsingException:解析に失敗しました。 "

私はgoogleの後、object1はオブジェクトなのでオブジェクト2が文字列と見なされています。
プロジェクトでjsonを変更することはできません。この場合、elasticsearchに保存するにはどうすればよいですか?

ご協力いただきありがとうございます。

+0

これが有効なJSONではありません - テストhttps://jsonlint.com/ –

+0

ああ、申し訳ありませんが、私はそれに気付かなかった。私はそれを更新し、残ってくれてありがとう –

答えて

0

どうすればよいですか?
このコマンドを実行すると動作します。

PUT test/t1/1 
{ 
    "objects": { 
    "object1": { 
    "id" : "12345", 
    "name":"abc" 
    }, 
    "object2": "12345" 
    } 
} 

と結果は次のとおりです。要件にこれらのいずれかに依存

{ 
    "_index": "test", 
    "_type": "t1", 
    "_id": "1", 
    "_version": 1, 
    "result": "created", 
    "_shards": { 
     "total": 2, 
     "successful": 2, 
     "failed": 0 
    }, 
    "created": true 
} 

UPDATE 1 はあなたの問題を解決することがあります。

PUT test/t1/2 
{ 
    "objects": [ 
     { 
     "object1": { 
      "id": "12345", 
      "name": "abc" 
     } 
     }, 
     { 
     "object2": "12345" 
     } 
    ] 
} 

PUT test/t1/2 
{ 
    "objects": [ 
     { 
     "object1": { 
      "id": "12345", 
      "name": "abc" 
     }, 
     "object2": "12345" 
     }, 
     { 
     ... 
     } 
    ] 
} 
+0

あなたのquikeの返事をありがとう、申し訳ありません、{}ではなく、[]でなければなりません、私はそれを改訂しました。 –

+0

私は答えを更新しました:-) –

+0

ありがとうございました!私たちは他のプロジェクトからjsonを取得しました。つまり、json文字列について何も変更できないということです。あなたはそれを解決する他の方法を知っていますか?おそらくelasticsearchの設定や構成は? –

関連する問題