导入maven依赖
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>2.10</version>
</dependency>
influxdb工具类
package com.yihui.commons.base.utils.influxDB;
import com.yihui.commons.base.utils.date.DateUtil;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.Point;
import org.influxdb.dto.Point.Builder;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* * 时序数据库 InfluxDB 连接
* * @author Dai_LW
* *
*
*/
public class InfluxDbUtil {
private static String openurl = "http://127.0.0.1:8086";//连接地址
private static String username = "admin";//用户名
private static String password = "admin";//密码
private static String database = "test";//数据库
private String measurement;//表名
private InfluxDB influxDB;
public InfluxDbUtil(String username, String password, String openurl, String database) {
this.username = username;
this.password = password;
this.openurl = openurl;
this.database = database;
}
public static InfluxDbUtil setUp() {
//创建 连接
InfluxDbUtil influxDbUtil = new InfluxDbUtil(username, password, openurl, database);
influxDbUtil.influxDbBuild();
influxDbUtil.createRetentionPolicy();
// influxDB.deleteDB(database);
// influxDB.createDB(database);
return influxDbUtil;
}
/**
* 连接时序数据库;获得InfluxDB
**/
public InfluxDB influxDbBuild() {
if (influxDB == null) {
influxDB = InfluxDBFactory.connect(openurl, username, password);
influxDB.createDatabase(database);
}
return influxDB;
}
/**
* * 设置数据保存策略
* * defalut 策略名 /database 数据库名/ 30d 数据保存时限30天/ 1 副本个数为1/ 结尾DEFAULT 表示 设为默认的策略
*
*/
public void createRetentionPolicy() {
String command = String.format("CREATE RETENTION POLICY \"%s\" ON \"%s\" DURATION %s REPLICATION %s DEFAULT",
"defalut", database, "30d", 1);
this.query(command);
}
/**
* * 查询
* * @param command 查询语句
* * @return
*
*/
public QueryResult query(String command) {
return influxDB.query(new Query(command, database));
}
/**
* * 插入
* * @param tags 标签
* * @param fields 字段
*
*/
public void insert(Map<String, String> tags, Map<String, Object> fields,String measurement) {
Builder builder = Point.measurement(measurement);
builder.tag(tags);
builder.fields(fields);
influxDB.write(database, "", builder.build());
}
/**
* * 删除
* * @param command 删除语句
* * @return 返回错误信息
*
*/
public String deleteMeasurementData(String command) {
QueryResult result = influxDB.query(new Query(command, database));
return result.getError();
}
/**
* * 创建数据库
* * @param dbName
*
*/
@SuppressWarnings("deprecation")
public void createDB(String dbName) {
influxDB.createDatabase(dbName);
}
/**
* * 删除数据库
* * @param dbName
*
*/
public void deleteDB(String dbName) {
influxDB.deleteDatabase(dbName);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getOpenurl() {
return openurl;
}
public void setOpenurl(String openurl) {
this.openurl = openurl;
}
public void setDatabase(String database) {
this.database = database;
}
public static void main(String[] args) {
//添加
InfluxDbUtil influxDB = InfluxDbUtil.setUp();
Map<String, String> tags = new HashMap<>();
Map<String, Object> fields = new HashMap<>();
tags.put("TAG_NAME","abc");
fields.put("TAG_VALUE","111");
try {
fields.put("TIMAMPEST", DateUtil.getCurrentDateStr());
} catch (Exception e) {
e.printStackTrace();
}
influxDB.insert(tags, fields,"table2");
//查询
QueryResult result= influxDB.query("select *from table2 order by time");
System.out.println(result);
}
}
版权声明:本文为wota5037原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。