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

How to Make a PUT request to Elastic Search with a JSON file using REST Template

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

有什么帮助吗?”因为互联网上的大多数示例只是假设我们有一个 POJO class 要发送。但在这里我不知道 JSON 模式。我需要使用原始 JSON 文件发出请求。

假设 json 架构包含索引的 mapping/settings。然后你可以像下面这样放置映射:

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();

对于创建索引,不用担心索引映射 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();
}