最近做的项目涉及到InfluxDB,相对来说,这算是个稍微偏门些的了吧,毕竟时序数据库很多朋友都不会接触。这里记录下与spring的对接,以便刚入手的朋友参考。
参照官网上数据写入这块,首先是创建数据库(database),这里默认已经安装好了Influx,这个比较简单。
官网给出的Http示例都是curl的:
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
执行及结果(我之前已经创建了几个数据库):
[root@iZ8vb8r420ejxfron03cj7Z ~]# curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
HTTP/1.1 200 OK
Connection: close
Content-Type: application/json
Request-Id: 67281cc5-6c54-11e7-81bf-000000000000
X-Influxdb-Version: 1.2.4
Date: Wed, 19 Jul 2017 07:32:22 GMT
Transfer-Encoding: chunked
{
"results":[{
"statement_id":0}]}
[root@iZ8vb8r420ejxfron03cj7Z ~]# influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
> show databases
name: databases
name
----
_internal
testdb
mydb
mydb2
mydb3
mydb4
这是官网给的curl方法,这种方式很简单,而且在influx提供的web页面就可以实现这种功能。所以,下面介绍在代码层实现。
这里我借用的是spring的Resttemplate(使用httpclient也一样):
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* Created by pangkunkun on 2017/7/19.
*/
public class InfluxDBTest {
public static void main(String[] args){
new InfluxDBTest().createDatabase();
}
public void createDatabase(){
String url="http://localhost:8086/query";
MultiValueMap<String,String> postParameter=new LinkedMultiValueMap<>();
postParameter.add("q","CREATE DATABASE mydb1");
RestTemplate restTemplate=