2017-03-20 27 views
1

私は、Elastic SearchでJSONスキーマをPUTする必要があるSpringBootアプリケーションを作成しています。 JSONスキーマは私のクラスパス内の私のresourcesフォルダにあります。 RESTテンプレートを使用して未処理のJSONファイルをPUTする方法RESTテンプレートを使用してJSONファイルでPUTリクエストを作成する方法

"インターネット上の例のほとんどは、送信するPOJOクラスがあると仮定しているだけですが、ここではJSONスキーマについて認識していないので、未処理のJSONファイルでリクエストする必要があります。

+0

JSONスキーマサンプルを入れてください。あなたが使用している&elasticsearchのバージョンを&あなたはなぜelasticsearchにjsonを入れたいですか?それから私はあなたを助けることができます。 – Ajinkya

+0

こんにちは、JSONスキーマは実際にデータのデータ構造を定義しています。これは弾性検索でインデックスを作成します。 https://qbox.io/blog/how-to-index-json-with-elasticsearchマッピングだけが定義されます。このJSONはインデックスを作成しようとしているデータではありません。 ESのバージョンは2.4.0 –

+0

です。次に、インデックスを作成する場所であなたのsudoコードを共有できますか? elasticsearchに格納するjson構造体を作成すると、心配する必要はありません。次に、Rahulによって提供されるコードを使用すると、自動的にマッピングが作成されます(あなたのスキーマ構造がわからないため、あなたの解決策) – Ajinkya

答えて

2

以下に示すように、あなたは同様にマッピングを置くことができますJSONスキーマは、インデックスのマッピング/設定が含まれていますと仮定:あなたが希望する場合

CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(index); 
// CREATE MAPPING 
String mapping_json = new String(Files.readAllBytes(json_mapping_path)); 
createIndexRequestBuilder.addMapping("my_mapping", mapping_json); 
CreateIndexResponse indexResponse = createIndexRequestBuilder.execute().actionGet(); 
1

のインデックスを作成するには、インデックスマッピングJSONを心配しないでくださいjsonは変更されず、このコードを使用して直接ドキュメントを作成することができます

for(listObject lObject:list){ 
XContentBuilder json; 
try { 
     json = XContentFactory.jsonBuilder(); 
     json.startObject();// Main Object Start 
     json.field(GlobalSearchCosntants.DOCUMENT_ID, lObject.getId()); 
     json.field(GlobalSearchCosntants.DOCUMENT_NAME, lObject.getName()); 
     json.field(GlobalSearchCosntants.DOCUMENT_TYPE, lObject.getType()); 
     json.endObject();// Main Object Start 
}catch (IOException e1) { 
     logger.error("Problem while creating document " + e1.getMessage()); 
} 

client.prepareIndex(INDEX_NAME, GlobalSearchCosntants.INDEX_TYPE, id) 
        .setSource(json).execute().actionGet(); 
} 
関連する問題