1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
|
@Service public class ElasticsearchManagementService {
@Autowired private RestHighLevelClient client; @Autowired private AlertService alertService;
public void createIndex(String indexName, String mapping) { try { CreateIndexRequest request = new CreateIndexRequest(indexName); if (mapping != null && !mapping.isEmpty()) { request.mapping(mapping, XContentType.JSON); } CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); log.info("创建索引成功: indexName={}, acknowledged={}", indexName, response.isAcknowledged()); } catch (Exception e) { log.error("创建索引失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public void deleteIndex(String indexName) { try { DeleteIndexRequest request = new DeleteIndexRequest(indexName); DeleteIndexResponse response = client.indices().delete(request, RequestOptions.DEFAULT); log.info("删除索引成功: indexName={}, acknowledged={}", indexName, response.isAcknowledged()); } catch (Exception e) { log.error("删除索引失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public void updateIndexMapping(String indexName, String mapping) { try { PutMappingRequest request = new PutMappingRequest(indexName); request.source(mapping, XContentType.JSON); AcknowledgedResponse response = client.indices().putMapping(request, RequestOptions.DEFAULT); log.info("更新索引映射成功: indexName={}, acknowledged={}", indexName, response.isAcknowledged()); } catch (Exception e) { log.error("更新索引映射失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public void updateIndexSettings(String indexName, String settings) { try { UpdateSettingsRequest request = new UpdateSettingsRequest(indexName); request.settings(settings, XContentType.JSON); AcknowledgedResponse response = client.indices().putSettings(request, RequestOptions.DEFAULT); log.info("更新索引设置成功: indexName={}, acknowledged={}", indexName, response.isAcknowledged()); } catch (Exception e) { log.error("更新索引设置失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public void refreshIndex(String indexName) { try { RefreshRequest request = new RefreshRequest(indexName); RefreshResponse response = client.indices().refresh(request, RequestOptions.DEFAULT); log.info("刷新索引成功: indexName={}, totalShards={}", indexName, response.getTotalShards()); } catch (Exception e) { log.error("刷新索引失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public void forceMergeIndex(String indexName) { try { ForceMergeRequest request = new ForceMergeRequest(indexName); request.maxNumSegments(1); ForceMergeResponse response = client.indices().forcemerge(request, RequestOptions.DEFAULT); log.info("强制合并索引成功: indexName={}, totalShards={}", indexName, response.getTotalShards()); } catch (Exception e) { log.error("强制合并索引失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public List<String> getIndices() { try { GetIndexRequest request = new GetIndexRequest("*"); GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT); return Arrays.asList(response.getIndices()); } catch (Exception e) { log.error("获取索引列表失败: {}", e.getMessage(), e); return new ArrayList<>(); } }
public Map<String, Object> getIndexInfo(String indexName) { try { GetIndexRequest request = new GetIndexRequest(indexName); GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT); Map<String, Object> indexInfo = new HashMap<>(); indexInfo.put("name", indexName); indexInfo.put("mappings", response.getMappings().get(indexName).getSourceAsMap()); indexInfo.put("settings", response.getSettings().get(indexName).getAsMap()); return indexInfo; } catch (Exception e) { log.error("获取索引信息失败: indexName={}, error={}", indexName, e.getMessage(), e); return new HashMap<>(); } }
public SearchResponse executeSearch(String indexName, String query) { try { SearchRequest request = new SearchRequest(indexName); request.source(query, XContentType.JSON); return client.search(request, RequestOptions.DEFAULT); } catch (Exception e) { log.error("执行搜索查询失败: indexName={}, query={}, error={}", indexName, query, e.getMessage(), e); return null; } }
public void bulkIndex(String indexName, List<Map<String, Object>> documents) { try { BulkRequest request = new BulkRequest(); for (Map<String, Object> document : documents) { IndexRequest indexRequest = new IndexRequest(indexName); indexRequest.source(document); request.add(indexRequest); } BulkResponse response = client.bulk(request, RequestOptions.DEFAULT); log.info("批量索引文档成功: indexName={}, totalItems={}, hasFailures={}", indexName, response.getItems().length, response.hasFailures()); } catch (Exception e) { log.error("批量索引文档失败: indexName={}, error={}", indexName, e.getMessage(), e); } }
public ClusterHealthResponse getClusterHealth() { try { ClusterHealthRequest request = new ClusterHealthRequest(); return client.cluster().health(request, RequestOptions.DEFAULT); } catch (Exception e) { log.error("获取集群健康状态失败: {}", e.getMessage(), e); return null; } }
public NodesInfoResponse getNodesInfo() { try { NodesInfoRequest request = new NodesInfoRequest(); return client.nodes().info(request, RequestOptions.DEFAULT); } catch (Exception e) { log.error("获取节点信息失败: {}", e.getMessage(), e); return null; } } }
|