1.删掉原有索引
public boolean deleteIndex(String indexName) {
Assert.hasLength(indexName, message);
AcknowledgedResponse deleteRespone = null;
try {
//1.使用client获取操作索引对象
IndicesClient indices = restHighLevelClient.indices();
//指定要删除的索引名称
DeleteIndexRequest request = new DeleteIndexRequest(indexName);
deleteRespone = indices.delete(request, RequestOptions.DEFAULT);
} catch (Exception e) {
log.error("elasticsearch deleteIndex error , meassage = {}", e.getMessage());
//打印轨迹
log.error(e.getMessage(), e);
}
Objects.requireNonNull(deleteRespone);
//3.根据返回值判断结果
return deleteRespone.isAcknowledged();
}
2.添加索引
public boolean addIndex(String indexName) {
Assert.hasLength(indexName, message);
try {
CreateIndexRequest request = new CreateIndexRequest(indexName);
Settings.Builder builder = Settings.builder()
.put("index.max_result_window", 1000000)
.put("index.mapping.total_fields.limit", 5000);
request.settings(builder);
//加入动态模板json
String templateJson ="{\"dynamic_templates\":[{\"all_to_double\":{\"match_mapping_type\":\"double\",\"mapping\":{\"type\":\"double\"}}}]}";
request.source(getXContentBuilderFromJson(templateJson));
request.mapping(getXContentBuilderFromJson(templateJson));
//创建索引
CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
return !response.isAcknowledged();
} catch (Exception e) {
log.error("elasticsearch addindex error , meassage = {}", e.getMessage());
//打印轨迹
log.error(e.getMessage(), e);
}
//3.根据返回值判断结果
return false;
}
3.调用动态模板json
public XContentBuilder getXContentBuilderFromJson(final String json) {
try {
Map<String, Object> map = new ObjectMapper().readValue(json, new TypeReference<Map<String, Object>>() {});
return XContentFactory.jsonBuilder().map(map);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}