将Zaim的数据导入Elasticsearch中,并使用Kibana进行浪费分析
最近,我发现自己无法很好地控制自己的支出,所以我想使用Kibana来可视化和分析我平时使用的家庭账本应用的数据。
环境
Windows 10 专业版
Docker Compose 版本 1.25.5
Elasticsearch 版本 7.7.1
Kibana 版本 7.7.1
摘要
将Zaim的家庭账簿数据导入到Elasticsearch,并通过Kibana进行分析。
下载家庭账簿数据。
首先从Zaim下载家庭账簿数据的CSV文件。虽然也有API可以使用,但由于有时无法获取到足够的信息,所以这次我们是从界面上获取的。
启动Elasticsearch和Kibana。
这次我们将使用Docker Compose一次性启动。
我们使用了https://github.com/sugikeitter/elasticsearch-kibana-docker。
# リポジトリをcloneして、docker-compose.ymlのディレクトリに移動
$ git clone git@github.com:sugikeitter/elasticsearch-kibana-docker.git
$ cd elasticsearch-kibana-docker
# Dockerイメージをビルド
$ docker-compose build
# ビルドが成功したらコンテナ起動
$ docker-compose up
确认启动
我会从浏览器中访问并确认启动。
Kibana
http://localhost:5601/
Elasticsearch
http://localhost:9200/
Kibana
http://本地主机:5601/
Elasticsearch
http://本地主机:9200/
尝试在Elasticsearch中注册数据
我现在会尝试用Curl命令注册一个数据。我将从已下载的CSV文件中按以下格式创建JSON文件。
{
"日付": "2019-01-03",
"方法": "payment",
"カテゴリ": "美容・衣服",
"カテゴリの内訳": "アクセサリー・小物",
"支払元": "-",
"入金先": "-",
"品目": "",
"メモ": "",
"お店": "-",
"通貨": "JPY",
"収入": 0,
"支出": 10800,
"振替": 0,
"残高調整": 0,
"通貨変換前の金額": 10800,
"集計の設定": "常に集計に含める"
}
在命令行中切换到JSON文件的目录,然后执行下一个命令。
$ curl -X POST "http://localhost:9200/zaimindex/my_type/?pretty" -H "Content-Type":"application/json" -d @zaimdata.json
我使用zaimindex作为索引名称,将刚刚的JSON文件导入到Elasticsearch中。请自行查阅详细内容哈哈。
确认数据已成功注册
我会使用curl命令来搜索先前的数据。
$ curl -X GET "http://localhost:9200/zaimindex/my_type/Wy-Ao3MBbVl3j7ySEdUZ?pretty" -H "Content-Type":"application/json"
{
"_index" : "zaimindex",
"_type" : "my_type",
"_id" : "Wy-Ao3MBbVl3j7ySEdUZ",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"日付" : "2019-01-03",
"方法" : "payment",
"カテゴリ" : "美容・衣服",
"カテゴリの内訳" : "アクセサリー・小物",
"支払元" : "-",
"入金先" : "-",
"品目" : "",
"メモ" : "",
"お店" : "-",
"通貨" : "JPY",
"収入" : 0,
"支出" : 10800,
"振替" : 0,
"残高調整" : 0,
"通貨変換前の金額" : 10800,
"集計の設定" : "常に集計に含める"
}
}
你已经注册成功了!接下来请确认映射并检查数据类型是否正确。
如果收入和支出栏位变成了字符串,就无法后续进行汇总统计了!请注意。
继续注册剩余的数据
我们将使用一个名为Elasticsearch-loader的Python工具进行批量注册。
首先,使用pip进行安装。
$ pip install elasticsearch-loader
我会一次性将Zaim的csv文件导入!您只需用参数传递Elasticsearch的主机、端口和索引。
$ elasticsearch_loader --es-host localhost:9200 --index zaimindex --type my_type csv Zaim.20200802111121.csv
在Kibana上进行分析。
评论
当我们面对数字时,我们能够看到有多少不必要的支出,让心感到痛苦。所以我决定减少在便利店和星巴克的购物。
我打算以后做以下事情来管理我的金钱:
1. 自动化并定期执行抓取Zaim页面的数据
2. 自动将数据投入到ES(Elasticsearch)中,例如使用Logstash或Fluentd
3. 设定每个月的各个类别的最高消费额度,并发送警报通知。
以上是我想要做的,为了管理我的钱笑。
有点长了!感谢你的阅读!
参考页面
以下是几个网址:
1. https://qiita.com/hassiweb/items/63374089edef63dc35b3
2. https://qiita.com/sugikeitter/items/f3b2c57bf8bbdc47a8bc
3. https://qiita.com/mj69/items/c9a50f6e4e425a258612
4. https://worklog.be/archives/3582