influxdb

Java API for influx database to write and fetch data.

You can use jitpack to add influxdb-java to your project or directly download jar file

Typical usage looks like:

For Writing Data

Configuration configuration = new Configuration("localhost", "8086",
    "root", "root", "Localhost");
//configuration.setProtocol("http");
DataWriter writer = new DataWriter(configuration);
writer.setMeasurement("sampleMeasurement1");

// Default is in seconds
writer.setTimeUnit(TimeUnit.MILLISECONDS);

writer.addField("field1", 12212);
writer.addField("field2", 22.44);
writer.addField("field3", "thisIsString");
writer.addField("field4", false);
writer.addTag("hostname", "server001");

// If we'll not set time, it will set automatically
writer.setTime(System.currentTimeMillis());
writer.writeData();

writer.addField("field1", 112);
writer.addField("field2", 21.44);
writer.addField("field3", "thisIsString1");
writer.addField("field4", true);
// Influxdb saves one point at one time. To add another point at same
// time we can use tags otherwise it will override the previous point.
writer.addTag("disk_type", "HDD");
writer.setTime(System.currentTimeMillis());

writer.writeData();

For Fetching Data

Configuration configuration = new Configuration("localhost", "8086",
    "root", "root", "Localhost");

Query query = new Query();
query.setMeasurement("sampleMeasurement1");
// selects all fields by default, if not specified as below.
query.addField("field1");
query.addField("field2");
query.addField("field3");
query.addTagInWhereClause("hostname", "server001");
// fetches results of last 1 hour. (supported format are d, h, m, s)
// query.setDuration("1h");

// uncomment below line to apply aggregate functions and grouping
// query.setAggregateFunction(AggregateFunction.MEAN);
// query.setGroupByTime("1m");
query.setLimit(1000);
query.fillNullValues("0");
DataReader dataReader = new DataReader(query, configuration);

ResultSet resultSet = dataReader.getResult();
System.out.println(resultSet);

Query query1 = new Query();
query1.setCustomQuery("select * from sampleMeasurement1");
dataReader.setQuery(query1);
resultSet = dataReader.getResult();
System.out.println(resultSet);

Other Utilities

Configuration configuration = new Configuration("localhost", "8086",
    "root", "root", "Localhost");

Utilities utilities = new Utilities();
// For creating database
utilities.createDatabase(configuration);

// For creating retention policy
utilities.createRetentionPolicy(configuration, "customPolicy", 30, 1, true);

utilities.dropMeasurement(configuration, "measurement1");

System.out.println(utilities.isInfluxdbAlive(configuration));

Build Requirements

You can build influxdb with:

$ mvn clean install -DskipTests=true

For more details http://csetutorials.com/fetch-and-write-influxdb-data-using-java.html