java处理influxDB条件查询,Java InfluxDB.query方法代码示例

import org.influxdb.InfluxDB; //导入方法依赖的package包/类

@GET

@Path("/{database}")

@Produces(MediaType.APPLICATION_JSON)

@AllowedProjectRoles({AllowedProjectRoles.DATA_OWNER, AllowedProjectRoles.DATA_SCIENTIST})

public Response getMetrics(

@PathParam("database") String database,

@QueryParam("columns") String columns,

@QueryParam("measurement") String measurement,

@QueryParam("tags") String tags,

@QueryParam("groupBy") String groupBy,

@Context SecurityContext sc, @Context HttpServletRequest req) throws

AppException, AccessControlException {

// TODO: FIX authentication, check if user has access to project

// https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/dto/QueryResult.java

InfluxDB influxdb = InfluxDBFactory.connect(settings.getInfluxDBAddress(),

settings.getInfluxDBUser(), settings.getInfluxDBPW());

Response response = null;

StringBuffer query = new StringBuffer();

query.append("select " + columns + " from " + measurement);

query.append(" where " + tags);

if (groupBy != null) query.append(" group by " + groupBy);

LOGGER.log(Level.FINE, "Influxdb - Running query: " + query.toString());

Query q = new Query(query.toString(), database);

QueryResult reply = influxdb.query(q, TimeUnit.MILLISECONDS);

if (reply.hasError()) {

response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.NOT_FOUND).

entity(reply.getError()).build();

} else if (reply.getResults().get(0).getSeries() != null) {

InfluxDBResultDTO influxResults = new InfluxDBResultDTO();

influxResults.setQuery(query.toString());

influxResults.setResult(reply);

response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.OK).

entity(influxResults).build();

} else {

response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.NO_CONTENT).

entity("").build();

}

influxdb.close();

return response;

}