はてなブックマークの検索の歴史
- 2007 MySQL の LIKE 検索
- 特に問題はなかった
- 2008 サービス規模が拡大
- 過去のナレッジを有効に活用できるようにしたい
- Sedue を導入して過去エントリの全文検索が可能に
- 2009 関連エントリ
- タグを元に関連エントリを表示できるようになった
- Senna で 全文検索結果にまとめてタグづけなど可能に
- スケールしないので課金ユーザのみ
- 2011 検索機能が不調になる
- 保守を新たに結ぶか、OSS を利用するか
- Solr の利用を検討
- 2013 Elasticsearch 検討
- 今は多くの場所で使っている
Elasticsearch の特徴
- 複雑なクエリを記述できる
- 例: 自分のブクマから YAPC が入ってるエントリを検索
- 例: お気に入りから YAPC エントリを検索
- Presso
- 管理画面でパラメータを設定するとどうみえるか表示される
- はてなブックマークカウンター
- ウェブサイト全体のブックマーク数を表示する
- URL で検索して足し合わせていたが、aggregation で実現できる
ES をなぜ採用したか?
- Query DSL の自由度で高度な企画要件にも耐えうる
- RDBMS だとスケールしにくい処理がオフロード可能
質疑応答
- オンラインでマッピングを変えるような時にどうしてるか?
- 同じ構成の ES を用意して切り替える。ブルーグリーンデプロイメント。