续上一篇回答,以下是KibanaService类的完整代码:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Service
public class KibanaService {
@Value("${kibana.url}")
private String kibanaUrl;
@Value("${kibana.username}")
private String kibanaUsername;
@Value("${kibana.password}")
private String kibanaPassword;
private final ObjectMapper objectMapper = new ObjectMapper();
public void createUser(String username, String password) throws IOException {
Map requestBody = new HashMap<>();
requestBody.put("password", password);
requestBody.put("full_name", username);
String jsonBody = objectMapper.writeValueAsString(requestBody);
HttpPost request = new HttpPost(kibanaUrl + "/api/security/v1/users");
request.setHeader("Content-Type", "application/json");
request.setHeader("kbn-xsrf", "true");
request.setHeader("Authorization", "Basic " + getAuthHeader());
StringEntity entity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
request.setEntity(entity);
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpResponse response = httpClient.execute(request);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
String responseBody = EntityUtils.toString(responseEntity);
System.out.println(responseBody);
}
}
}
public void createRole(String roleName, String[] indices) throws IOException {
Map requestBody = new HashMap<>();
requestBody.put("elasticsearch", new HashMap<>());
requestBody.put("kibana", new HashMap<>());
Map kibana = (Map) requestBody.get("kibana");
kibana.put("global", new String[]{"all"});
kibana.put("space", new HashMap<>());
for (String index : indices) {
Map