Elasticsearchにcsvファイルをインポートする
Elasticsearchにはどうやってデータ入れるのが良いのか、調べていたらEmbulkというものがあるらしいです。流行っているらしく、これを利用してデータを投入します。
Embulkについてまとめ。
Fluentdのバッチ版Embulk(エンバルク)のまとめ - Qiita
Elasticsearchにcsvファイルをインポートするためのレシピが公式に公開されていますので、それに沿って作業を実施。
Scheduled bulk data loading to Elasticsearch + Kibana 4 from CSV files — Embulk 0.8 documentation
まず、モジュールをダウンロードしてきます。
# wget http://dl.embulk.org/embulk-latest.jar -O /usr/local/bin/embulk # chmod +x /usr/local/bin/embulk # embulk --version embulk 0.8.13
Embulkにはたくさんpluginが作成されているようで、Elasticsearchへアウトプットするためのpluginを追加してあげます。pluginはかなり充実してます。
# embulk gem install embulk-output-elasticsearch
で、Elasticsearchへぶち込むための、Embulk設定ファイルを作成する必要があります。しかしながら、以下のような必要最低限の情報を与えてあげれば、Embulk側で勝手に設定ファイルを作成してくれるみたいです。
[seed.yml] in: type: file path_prefix: ./output/ out: type: elasticsearch index: shikiho index_type: shikiho nodes: - host: localhost
以下のguessコマンドを実行することで、実際の設定ファイルであるconfig.ymlを作成してくれます。
# embulk guess ./seed.yml -o config.yml
以下の通り、config.ymlが作成されます。
[config.yml] in: type: file path_prefix: ./output/output parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' escape: '"' trim_if_not_quoted: false skip_header_lines: 1 allow_extra_columns: false allow_optional_columns: false columns: - {name: code, type: long} - {name: creadtedDate, type: string} - {name: meigaraName, type: string} - {name: url, type: string} - {name: accountingPeriod, type: string} - {name: establishmentDate, type: string} - {name: listingDate, type: string} - {name: feature, type: string} - {name: business, type: string} - {name: assets, type: string} - {name: finance, type: string} - {name: nullColumn1, type: string} - {name: comment1, type: string} - {name: comment2, type: string} - {name: industryType, type: string} - {name: vendor, type: string} - {name: customer, type: string} - {name: rival, type: string} - {name: headOffice, type: string} - {name: branchOffice, type: string} - {name: workerNumber, type: string} - {name: security, type: string} - {name: bank, type: string} - {name: affiliate, type: string} - {name: nullColumn2, type: string} - {name: progress, type: string} - {name: holderNumber, type: string} out: type: elasticsearch index: shikiho index_type: shikiho nodes: - {host: localhost}
作成したconfig.ymlを指定して、runを実行してあげればファイルを読み込んでくれます。
# embulk run config.yml
無事検索できるようになりました。
# curl -XGET 'http://localhost:9200/shikiho/shikiho/_search?q=code:1301' { "took": 6, "timed_out": false, "_shards": { "total": 1, "successful": 1, "failed": 0 }, "hits": { "total": 1, "max_score": 8.500806, "hits": [ { "_index": "shikiho", "_type": "shikiho", "_id": "AVfWtm-63dgHhWAY7GX3", "_score": 8.500806, "_source": { "code": 1301, "creadtedDate": "作成日:2016年09月16日", "meigaraName": "1301 (株)極洋 きょくよう [水産・農林業]", "url": "【URL】 http://www.kyokuyo.co.jp/", "accountingPeriod": "【決算】3月", "establishmentDate": "【設立】1937.9", "listingDate": "【上場】1949.5", "feature": "【特色】水産品の貿易、加工、買い付け主力。すしネタに強み。加工食品は業務用が軸。海外加工比率高い", "business": "【連結事業】水産商事50(1)、冷凍食品30(0)、常温食品8(2)、物流サービス1(5)、鰹・鮪11(1)、他0(8) <16・3>", "assets": "", "finance": "", "nullColumn1": "", "comment1": "【大幅増益】冷凍・常温食品は拡大、塩釜新工場本格稼働が奇与。水産商事はサケ・マスなど魚価が安 定、加工品が拡大、米国市場も堅調。冷蔵運搬船から撤退し物流効率化。新工場償却負担増でも営業増益。", "comment2": "【養殖】完全養殖のクロマグロは18年初に初出荷へ、天然種苗の確保にも全力。業務用冷食では、すし向けなど商品群の拡充を図る。9月末基準日で10株を1株に併合。", "industryType": "【業種】 食品 時価総額順位 56/172社", "vendor": "【仕入先】KAMEC", "customer": "【販売先】三菱食品", "rival": "【比較会社】1333 マルハニチ,2875 東洋 水産,1332 日本水産", "headOffice": "【本社】107-0052東京都港区赤坂3-3-5 TEL03-5545-0701", "branchOffice": "【支社】大阪TEL06-6315-1251,東京,福岡,他", "workerNumber": "【従業員】<16.3>連2,249名 単599名(39.8歳)[年]661万 円", "security": "【証券】[上]東京[幹]日興,野村,大和[名]三菱U信[監]井上", "bank": "【銀行】りそな,農中,三井住友信,三菱U信,三菱U", "affiliate": "【連結】極洋水産,極洋商事,極洋食品", "nullColumn2": "", "progress": "【四半期進捗率】3期平均19.6% 今期13.3%(-6.3%)", "holderNumber": "33702" } } ] } }