2016-07-29 9 views
0

を更新します。弾性検索更新は、私はドキュメントを更新する弾性検索のユースケースを持っている複雑な文書

マイドキュメントは、今、私は親ドキュメントを更新することになるだろういずれか、またはネストされたドキュメントを更新されますいくつかのフィードにdepepeding this-

{ 
"first_name" : "firstName", 
"last_name" : "lastName", 
"version" : 1234, 
"user_roles" : { 
    "version" : 12345, 
    "id" : 1234, 
    "name" : "role1"}, 
}, 
"groups" : { 
    "version" : 123, 
"list": [ 
{"id":123, "name" : "ashd"}, 
{"id":1234, "name" : "awshd"}, 
] 
} 

}

のようなものです。

私は

"script": { 
    "inline": "ctx._source.user_roles = { "id" : 5678, "name" :"hcsdl"} 
    } 

クライアント - RESTのような何かをしましたが、

ネストされた/複雑なものを更新する方法を取得する、姓と名が、できないなどの基本的な属性を更新する方法を見つけることができていますその

exception-私に与えて実際の使用は、私が実際にJavaで地図を取得します を小文字は区別しました。 このキーは、「FIRST_NAME」のような簡単なキーであるか、または「USER_ROLE」などのキーと「グループ」 私はバージョンにクエリによって更新を使用してドキュメントを更新したい複雑になることがあります。

私が書いたコードは、文書が地図 ある

for (String key : document.keySet()) { 

      String value = defaultObjectMapper.writeValueAsString(document.get(key)); 

      scriptBuilder.append("ctx._source."); 
      scriptBuilder.append(key); 
      scriptBuilder.append('='); 
      scriptBuilder.append(value); 
      scriptBuilder.append(";"); 
     } 

は、今私は、単純なフィールドが更新または複雑なオブジェクトするかもしれませんlike-ものです。 私はuser_roles.idとuser_roles.nameのようなキーを与えようとしましたが、完全なuser_rolesを与えようとしましたが、何も動いていません。

誰かが代わりに、スクリプト内の逐語的なJSONのグルーヴィーなマップでこれを試してみてください

+0

あなたは何の例外を得るのですか?おそらく二重引用符をエスケープする必要があります。 – Val

答えて

0

をhelpoutができます:

​​
+0

ちょっとヴァル、はい上記の構文の作品が、私は一般的なものでありかつReindexPluginプラグインを使用してJavaコードで行わないことができる何かを探しています。 私は私がそれを手直ししましょう、私は理解して[OK]を、正確なユースケース – user2634891

+0

を更新しました。 – Val

+0

Hey Val、 更新された質問に取り組む機会を得ましたか? – user2634891