elastic学习

elasticsearch学习资源很少,靠自己摸索。
安装启用都很容易,在如何把大量数据导入ES中遇到了好多问题,想了好多办法。很难搞定。搞了一两天,才搞清楚如何把CSV导入到ELASTICSEARCH中去。
把相关的记一下。

logstash设置

官方文档里说好多都是可选的,实际上,在配置文件中都要设置,不然出错。

input {
    file {
        path => ["/home/eric/dashtest/toes.csv"]
        start_position => beginning #必然设置,而且这个beginning不能加引号,晕。
        sincedb_path => "/dev/null" #必须设置
    }
}

filter {
    csv {
        separator => ","
        # 本来想用官方文档中的一些设置,让logstash自动生成列名,但是试了多次不行,只能用这个最原始的方法,就是直接指定列名。注意列名用的列表,方括号。
        columns => [
            'ts_code',
            'ann_date',
            'end_date',
            'eps',
            ......
        ]
        #设置列的数据格式也是大坑,设置string格式通不过,反正默认是string所以只有把string格式的列名不设置就行了。
        convert => {
            "ann_date" => "date"
            "end_date" => "date"
            "eps" => "float"
            "dt_eps" => "float"
            ......
        }
    }
}

output {
    elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "fina_indi"
    }
    stdout { codec => rubydebug }
}


经过这一阵子折腾,数据终于导进去了。

其它方法

由于logstash试了好几次都没有成功,查到了还可以用以下方法把csv导入es.

  • 利用python的elasticsearch库
  • 利用elastic 自己家的轻量化工具filebeat
  • 利用第三方工具,比如我查到的abc import, excelasitc.

总的来说,所谓elk还是比较小众,解决问题不好找。后面kibana的使用也许会轻松一点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章