@RequireSystemAccess @POST @Path(RootResource.APPLICATION_ID_PATH) @JSONP @Produces({MediaType.APPLICATION_JSON, "application/javascript"}) public ApiResponse addIndex( @Context UriInfo ui, @PathParam("applicationId") final String applicationIdStr, Map<String, Object> config, @QueryParam("callback") @DefaultValue("callback") String callback) throws Exception { Preconditions.checkNotNull( config, "Payload for config is null, please pass {replicas:int, shards:int} in body"); ApiResponse response = createApiResponse(); if (!config.containsKey("replicas") || !config.containsKey("shards") || !(config.get("replicas") instanceof Integer) || !(config.get("shards") instanceof Integer)) { throw new IllegalArgumentException( "body must contains 'replicas' of type int and 'shards' of type int"); } if (!config.containsKey("indexSuffix")) { throw new IllegalArgumentException("Please add an indexSuffix to your post"); } final UUID appId = UUIDUtils.tryExtractUUID(applicationIdStr); if (appId == null) { throw new IllegalArgumentException("app id was not parsed"); } EntityManager em = emf.getEntityManager(appId); em.addIndex( config.get("indexSuffix").toString(), (int) config.get("shards"), (int) config.get("replicas"), (String) config.get("writeConsistency")); response.setAction("Add index to alias"); return response; }
@RequireSystemAccess @GET @Path("rebuild/{jobId}") @JSONP @Produces({MediaType.APPLICATION_JSON, "application/javascript"}) public ApiResponse rebuildIndexesGet( @PathParam("jobId") String jobId, @QueryParam("callback") @DefaultValue("callback") String callback) throws Exception { logger.info("Getting status for index jobs"); Preconditions.checkNotNull(jobId, "query param jobId must not be null"); ReIndexService.ReIndexStatus status = getReIndexService().getStatus(jobId); final ApiResponse response = createApiResponse(); response.setAction("rebuild indexes"); response.setProperty("jobId", status.getJobId()); response.setProperty("status", status.getStatus()); response.setProperty("lastUpdatedEpoch", status.getLastUpdated()); response.setProperty("numberQueued", status.getNumberProcessed()); response.setSuccess(); return response; }
/** Execute the request and return the response. */ private ApiResponse executeAndCreateResponse( final ReIndexRequestBuilder request, final String callback) { final ReIndexService.ReIndexStatus status = getReIndexService().rebuildIndex(request); final ApiResponse response = createApiResponse(); response.setAction("rebuild indexes"); response.setProperty("jobId", status.getJobId()); response.setProperty("status", status.getStatus()); response.setProperty("lastUpdatedEpoch", status.getLastUpdated()); response.setProperty("numberQueued", status.getNumberProcessed()); response.setSuccess(); return response; }