将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可以使用,但由于有时无法获取到足够的信息,所以这次我们是从界面上获取的。

image.png

启动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上进行分析。

image.png

评论

当我们面对数字时,我们能够看到有多少不必要的支出,让心感到痛苦。所以我决定减少在便利店和星巴克的购物。

我打算以后做以下事情来管理我的金钱:
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

广告
将在 10 秒后关闭
bannerAds