logstash-input-rss + elasticsearchを触ってみた

前回の記事は[こちら](http://qiita.com/nobuta@github/items/0d94104a830ac986ff75)。
riverプラグインは非推奨のため、logstashで再挑戦.

## 環境

Elasticsearch 1.4.4
logstash 1.5.0
logstash-input-rss 0.1.4
mac osx


## 構築

brewでインストール。

```
$ brew install elasticsearch14
$ brew install logstash
$ cd /usr/local/opt/logstash/libexec
$ bin/plugin install logstash-input-rss
```

logstash-output-elasticsearchの挙動として、logstash側でelasticsearchのクラスタに参加できる必要があるため、 `elasticseatch.yml`を修正してcluster名を合わせます。

```title:/usr/local/etc/elasticsearch/elasticsearch.yml 
32c32
< cluster.name: elasticsearch
---
> cluster.name: elasticsearch_brew
112d111
< index.number_of_replicas: 0
```

## logstash起動

設定ファイルから起動しても良いのですが、今回はワンライナーで起動。
特にデータ取得時のログは流れませんが、elasticsearchクラスタに参加していることが分かります。

```
$ logstash -e "input { rss { interval => 60 url => 'http://feedblog.ameba.jp/rss/ameblo/mogatanpe/rss20.xml' } } output { elasticsearch { host => 'localhost' index => 'logstash-feeds' manage_template => false type => page} }"
9 26, 2015 10:17:17 午後 org.elasticsearch.node.internal.InternalNode <init>
情報: [logstash-MAC-3712-64042-7982] version[1.5.1], pid[64042], build[5e38401/2015-04-09T13:41:35Z]
9 26, 2015 10:17:17 午後 org.elasticsearch.node.internal.InternalNode <init>
情報: [logstash-MAC-3712-64042-7982] initializing ...
9 26, 2015 10:17:17 午後 org.elasticsearch.plugins.PluginsService <init>
情報: [logstash-MAC-3712-64042-7982] loaded [], sites []
9 26, 2015 10:17:20 午後 org.elasticsearch.node.internal.InternalNode <init>
情報: [logstash-MAC-3712-64042-7982] initialized
9 26, 2015 10:17:20 午後 org.elasticsearch.node.internal.InternalNode start
情報: [logstash-MAC-3712-64042-7982] starting ...
9 26, 2015 10:17:20 午後 org.elasticsearch.transport.TransportService doStart
情報: [logstash-MAC-3712-64042-7982] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/172.19.46.32:9300]}
9 26, 2015 10:17:20 午後 org.elasticsearch.discovery.DiscoveryService doStart
情報: [logstash-MAC-3712-64042-7982] elasticsearch/TCYCkiQJSq2LlaUp96-IHQ
9 26, 2015 10:17:50 午後 org.elasticsearch.discovery.DiscoveryService waitForInitialState
9 26, 2015 10:17:50 午後 org.elasticsearch.node.internal.InternalNode start
情報: [logstash-MAC-3712-64042-7982] started
Logstash startup completed
9 26, 2015 10:19:29 午後 org.elasticsearch.cluster.service.InternalClusterService$UpdateTask run
情報: [logstash-MAC-3712-64042-7982] detected_master [Moon Knight][SIBO2UKgReei7WAxck7h3g][MAC-3712][inet[/127.0.0.1:9300]], added {[Moon Knight][SIBO2UKgReei7WAxck7h3g][MAC-3712][inet[/127.0.0.1:9300]],}, reason: zen-disco-receive(from master [[Moon Knight][SIBO2UKgReei7WAxck7h3g][MAC-3712][inet[/127.0.0.1:9300]]])

```

## データ取得

こんな感じ. 

```
$ curl 'http://localhost:9200/logstash-feeds/page/_search' -d '{"size": 2}' | jq .
{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 20,
    "max_score": 1,
    "hits": [
      {
        "_index": "logstash-feeds",
        "_type": "page",
        "_id": "AVAJ7S1UdobbBm6aiCVi",
        "_score": 1,
        "_source": {
          "message": "<p>\n どうも。みなさま こんにちは、最上です。MTV EMA (Europe Music Awards)の日本代表を決める「ベスト・ジャパン・アクト」のノミネートがかかった戦いを、いましております。9/15 AM6:59までです。詳しくはコチラどう投票すればいいの？と質問を多く頂くので かきますね。まず、【Twitter】を使って投票をしています。公式サイトからでんぱ組を選んでツイートすることも可能ですが、サイトにいかなくても自分で簡単にできます。#MTVEMA#NominateDempagumiTwitterで この2つのハッシュタグをつけたツイートをすると でんぱ組に票を入れたことになります。辞書登録すると楽です！iPhoneの場合は設定→一般→キーボード→ユーザ辞書です。重要なのは、1人何回でもできることリプでかいたものも有効ということ改行してても大丈夫ということRTも有効です！(あまりにもやりすぎるとTwitterで規制がかかるので注意…！)メインTLに流したくない場合はぼくにいくらでもリプを飛ばしてくださいね。注意点としてはスペルミスが多いこと(ぼくも今朝やってました…)、二つのハッシュタグの間にスペースがないとハッシュタグとして機能しないので、無効になります。他の文字とくっついていてもだめです。☆無効な例「#MTVEMA#NominateDempagumi」「きょうもがんばったー#MTVEMA #NominateDempagumi」「#MTVEMA #NominateDempagumiさて家に帰ろう」★有効な例「#MTVEMA #NominateDempagumi <a href=\"http://ameblo.jp/mogatanpe/entry-12072681156.html\">続きをみる</a><p>『著作権保護のため、記事の一部のみ表示されております。』</p>\n\n</p>",
          "@version": "1",
          "@timestamp": "2015-09-26T13:52:24.802Z",
          "Feed": "http://feedblog.ameba.jp/rss/ameblo/mogatanpe/rss20.xml",
          "published": "2015-09-13T07:56:01.000Z",
          "title": "MTV EMAの投票について！",
          "link": "http://ameblo.jp/mogatanpe/entry-12072681156.html",
          "author": null
        }
      },
      {
        "_index": "logstash-feeds",
        "_type": "page",
        "_id": "AVAJ7S1UdobbBm6aiCVn",
        "_score": 1,
        "_source": {
          "message": "<p>\n どうも。お久しぶりです、最上です。全国ツアーど真ん中です。凄まじく忙しいのでまだ彩織さんと鍋パーティできてません…がきのうはセカオワさんのお花見会に少しだけお邪魔しました。代々木公園。暗すぎて肝心の桜がよくみえませんでした。笑誰が来てたのかもよくみえませんでした。笑きゃりちゃんと2回ハグしたのは覚えてます。久しぶりに会った彩織さんは相変わらずかわいくて かわいくて かわいかったです。ちょっと酔っててさらにかわいかったです。「もがみぃ～もう帰るのぉ～？」と デレデレしてくれたのを忘れません。アメリカンな挨拶を交わしきょうは栃木 宇都宮にきました。LIVEを終えて半身浴してたらのぼせそうになったので ちょっとでます。さて不安だったホールツアーも気づけばそろそろ折り返しいろんな事があったよ自分がすんげえ楽しいと感じたLIVEをファンの人には不評だったり逆に 自分が出し切れてなかったかも…と思ったLIVEを 「最高だった！」と言われたりどちらも &quot;悔しい&quot; と感じるすべてのLIVEを最高に楽しいものにしたいし そう挑んでるんだがツアー中といえど オフはなくて 朝から晩まで毎日仕事してLIVEまえにいろいろ仕事する日もあり体調管理がどえりゃー難しいですきょうもリハの時はさっぱり声がでず耳もうまく聴こえず踊る体力もほとんどなかったあー やべえなこれはと思い できるだけのポーションを使い本番に挑んだ(きょうのLIVEまえにストレッチちう)という風に 割といつもギリギリなんだがリハでできなかったことも本番だとできることが多いアドレナリン？客席が素敵だからかなあこれはほんとに会場ごとに色んな工夫をしてるんですが少し気になることがあったので書いとくねサインボール 投げる日があったりZeppのときはTシャツぶっ飛ばしたりしたけどぼくはなるべく もが推しっぽい人たちに投げてる紫のサイリウムみえるなーとかでね！その人たちなら 大切にしてくれるだろうな売らないだろうな と思って 笑必要な人に届けばいいんです必要ない人は取らなくていいんです売るくらいなら近くにいる人に譲ってあげてくださいなすんげー金に困ってるとかならせめて 売るなら ヤフオクでね！(^o^)(←ねむさんがCMやってるんで！)ぼくたちは <a href=\"http://ameblo.jp/mogatanpe/entry-12010378284.html\">続きをみる</a><p>『著作権保護のため、記事の一部のみ表示されております。』</p>\n\n</p>",
          "@version": "1",
          "@timestamp": "2015-09-26T13:52:24.805Z",
          "Feed": "http://feedblog.ameba.jp/rss/ameblo/mogatanpe/rss20.xml",
          "published": "2015-04-04T17:28:00.000Z",
          "title": "うとうとしながら大冒険",
          "link": "http://ameblo.jp/mogatanpe/entry-12010378284.html",
          "author": null
        }
      }
    ]
  }
}
```