如何使用REST模板使用JSON文件向Elastic Search发出PUT请求

时间:2017-03-20 07:31:12

标签: elasticsearch spring-boot resttemplate

我正在创建一个SpringBoot应用程序,我需要在Elastic Search中输入JSON模式。 JSON模式将位于我的资源文件夹中(在我的类路径中)。如何使用REST模板输出原始JSON文件。

任何帮助?“因为互联网上的大多数示例都假设我们有一个要发送的POJO类。但是在这里我不知道JSON模式。我需要使用原始JSON文件发出请求。< / p>

2 个答案:

答案 0 :(得分: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 :(得分:1)

对于create index,如果您希望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();
}