特点
InfluxDB2.0 OSS(Object Storage Service,简称OSS)时序平台建立的目的是为了收集、存储、处理和可视化性能和信息。
安装 InfluxDB
启动 InfluxDB

taskkill f t im influxd.exe 关闭程序
UI界面设置InfluxDB

设置初始化用户

输入初始化用户的用户名
给你的初始化用户赋密码
输入你的初始化Org名
输入你的初始化Bucket名字
点击继续
注:Bucket相当于库的概念,是用来存储你的时序数据的地方。每个的Bucket都有自己的保留策略(比如数据保留几天,这样的一个时间点概念)
插入数据

从UI里面获取以下信息
organization – See View organizations for instructions on viewing your organization ID.
Bucket – See View buckets for instructions on viewing your bucket ID.
API token – See View tokens for instructions on viewing your API token.
InfluxDB URL – See InfluxDB URLs.
注:
measurement相当于table
filed相当于属性
tag相当于索引
data point: 数据点,相当于关系型数据库中的row
Java Demo
<dependency><groupId>com.influxdb</groupId><artifactId>influxdb-client-java</artifactId><version>3.3.0</version></dependency>
package example;import java.time.Instant;import java.util.List;import com.influxdb.annotations.Column;import com.influxdb.annotations.Measurement;import com.influxdb.client.InfluxDBClient;import com.influxdb.client.InfluxDBClientFactory;import com.influxdb.client.WriteApiBlocking;import com.influxdb.client.domain.WritePrecision;import com.influxdb.client.write.Point;import com.influxdb.query.FluxRecord;import com.influxdb.query.FluxTable;public class InfluxDB2Example {public static void main(final String[] args) {// You can generate an API token from the "API Tokens Tab" in the UIString token = "mewoGaqs7zFmrd5mnaXTuIAVc0QGPXXXX==";String bucket = "buck";String org = "orgName";InfluxDBClient client = InfluxDBClientFactory.create("http://localhost:8086", token.toCharArray());//InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://localhost:8086", token.toCharArray(), org, bucket);//writeApi.writeMeasurement(WritePrecision.NS, temperature);//写入数据//Option 1: Use InfluxDB Line Protocol to write data/* String data = "mem,host=host1 used_percent=23.43234543";WriteApiBlocking writeApi = client.getWriteApiBlocking();writeApi.writeRecord(bucket, org, WritePrecision.NS, data);System.out.println("写入成功");*///Option 2: Use a Data Point to write data 推荐使用Point point = Point.measurement("temperature").addTag("location", "west").addField("value", 55D).time(Instant.now(), WritePrecision.NS);//WriteOptions writeOptions = WriteOptions.builder()// .batchSize(5000)// .flushInterval(1000)// .bufferLimit(10000)// .jitterInterval(1000)// .retryInterval(5000)// .build();//WriteApi writeApi=client.getWriteApi(writeOptions);WriteApiBlocking writeApi = client.getWriteApiBlocking();writeApi.writePoint(bucket, org, point);System.out.println("写入成功");//Option 3: Use POJO and corresponding class to write data/*Temperature temperature = new Temperature();temperature.location = "west";temperature.value = 77D;temperature.value2=123D;temperature.mytime = Instant.now();WriteApiBlocking writeApi = client.getWriteApiBlocking();writeApi.writeMeasurement(bucket, org, WritePrecision.NS, temperature);System.out.println("写入成功");*///查询数据/*** 查询语法说明* 1、bucket 桶* 2、range 指定起始时间段* range有两个参数start,stop,stop不设置默认为当前。* range可以是相对的(使用负持续时间)或绝对(使用时间段)* 3、filter 过滤条件查询 _measurement 表 _field 字段* 4、yield()函数作为查询结果输出过滤的tables。*///String query = "from(bucket: \"eiss\") |> range(start: -3h)";/*String query = "from(bucket: \"eiss\") |> range(start:2022-07-26T02:25:19.060Z, stop:2022-07-26T08:25:19.060Z)" +" |> filter(fn: (r) => r[\"_measurement\"] == \"temperature\")" +" |> filter(fn: (r) => r[\"_field\"] == \"value2\")";List<FluxTable> tables =client.getQueryApi().query(query,org);for (FluxTable table : tables) {for (FluxRecord record : table.getRecords()) {if("temperature".equals(record.getMeasurement())){System.out.println(record.getMeasurement());//temperatureSystem.out.println(record.getField());//value2System.out.println(record.getTable());//1System.out.println(record.getValue());//222.0System.out.println(record.getStart());//2022-07-26T02:25:19.060ZSystem.out.println(record.getStop());//2022-07-26T08:25:19.060ZSystem.out.println(record);//FluxRecord[table=1, values=9]}}}*///释放资源client.close();}@Measurement(name = "temperature")private static class Temperature {@Column(tag = true)String location;@ColumnDouble value;@ColumnDouble value2;@Column(timestamp = true)Instant mytime;}}
UI界面查询数据

关于flux-dsl
<dependency><groupId>com.influxdb</groupId><artifactId>flux-dsl</artifactId><version>4.2.0</version></dependency>
具体函数见https://github.com/influxdata/influxdb-client-java/tree/master/flux-dsl
文章转载自简墨汇,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




