Your SlideShare is downloading. ×
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Elastic searchとは_エンジニア勉強会20140212
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Elastic searchとは_エンジニア勉強会20140212

3,036

Published on

2月12日に開催されたエスキュービズムエンジニア勉強会で使用した資料になります。

2月12日に開催されたエスキュービズムエンジニア勉強会で使用した資料になります。

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,036
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ElasticSearchとは?
  • 2. OutLine ElasticSearch ElasticSearchとは � さわってみる � キーワード � デモについて解説 � 情報源 �
  • 3. ElasticSearchとは � elastic � 弾力のある,伸縮自在の � しなやかな. � 〈人・感情など〉不幸があってもすぐ立ち直る,容易に屈し ない; 屈託のない. � 〈規則・考え方など〉融通性のある. � 不可算名詞: ゴムひも,ゴム入り生地 � 可算名詞 《主に米国で用いられる》 輪ゴム. 研究社 新英和中辞典
  • 4. ElasticSearchとは 【全文検索】機能を、 � 【RESTful】 APIで提供する、 � ソフトウェア(あるいはフレームワーク) � (独断と偏見に基づく)
  • 5. ElasticSearchとは 全文検索エンジンApache Luceneがベース � RESTful APIで操作 � 分散処理のサポート � � シャーディング、レプリケーション � プラグインによる拡張 � river � analysis 入力系 【構文解析】など
  • 6. ElasticSearchとは � どこで使われているか � foursquare ...など?
  • 7. OutLine ElasticSearchとは � さわってみる � キーワード � デモについて解説 � 情報源 �
  • 8. さわってみる � とりあえずデモ � http://<demo � server ipaddr>/page/ docker run -d otolab/demo20140212-elasticsearch /usr/local/bin/init.sh � 公開予定
  • 9. さわってみる:デモのコード � HTMLの構造 <form id="search"> <input name="query" /> <input type="submit" /> </form> <form id="put"> <select name="user"> <option>otoan</option><option>naoto kato</option> </select> <textarea name="message" value=""></textarea> <input name="user" type="hidden" value="otoan" /> <input type="submit" /> </form>
  • 10. さわってみる:デモのコード � 書き込み $('form#put').on('submit', function(e){ e.preventDefault(); var $this = $(this); var data = { postDate: (new Date()).toISOString(), user: $this.find('[name=user]').val(), message: $this.find('[name=message]').val() }; send('PUT', '/twitter/tweet/'+uuid(), data, function(data, dataType){ print(JSON.stringify(data)); } ); });
  • 11. さわってみる:デモのコード � 検索 $('form#search').on('submit', function(e){ e.preventDefault(); var query = { "query": { "text": { "message": $(this).find('[name=query]').val() } } }; send('POST', '/twitter/tweet/_search', query, function(data){ if (data.hits) print_hits(data.hits); } ); });
  • 12. さわってみる:デモのコード � AJAX部分 function send(method, url, data, success){ $.ajax({ url: url, type: method, dataType: 'json', data: JSON.stringify(data), success: success }); }
  • 13. さわってみる � 管理プラグイン � HQ � head
  • 14. OutLine ElasticSearchとは � さわってみる � キーワード � デモについて解説 � 情報源 �
  • 15. キーワード Apache Lucene � 全文検索 � � 転置インデックス � N-Gram � 形態素解析 REST / RESTful API � NoSQL �
  • 16. キーワード:Apache Lucene � Apacheのプロジェクトの一つ 全文検索エンジンライブラリ � 100% Pure Java � 1000万ドキュメント程度の規模まで1台で可能 � � 使われているサービス Wikipedia � LinkedIn � EcripseIDE � Apache Solr � � Web検索機能ソフトウェア
  • 17. キーワード:Apache Lucene 入力の解析、クエリの解析 � 転置インデックスによる検索 � 結果のスコアリング � ...などをサポート 出典:https://www.ibm.com/developerworks/jp/opensource/library/os-apache-lucenesearch/
  • 18. キーワード:全文検索 � 全文検索 = Full Text Search � 文章等のごく一部を高速に探し出す検索 � 転置インデックス � キーワードがどのデータに属するか?を記録 � データ(文書)からキーワードを抽出する必要がある � (参考)B-Treeインデックス � � 完全一致(と前方一致)がきわめて高速 曖昧な検索には強くない
  • 19. キーワード:転置インデックス � 文章に単語が含まれる ⇔ 単語が含まれる文章を探す 出典:http://thinkit.co.jp/free/article/0710/17/1/
  • 20. キーワード:N-gram � N-gram � 決まった文字数で分割を繰り返す 出典:http://handin.sakura.ne.jp/archives/179
  • 21. キーワード:形態素解析 � 形態素解析 � 日本語の文法構造と辞書などから、単語を分割 (+意味づけ) � 実装としては。。 MeCab系(MeCab、Sen、Chasen、Gosen) � KyTea � Kuromoji �
  • 22. キーワード:全文検索 � 文章(自然言語)を快適に検索するためには... � TOKENING � � � STEMMING � � Fishing, fished, Fish, Fisher > fish FILTERLING � � , ()など記号での分割、日本語の分かち書き化 N-gram、形態素解析 ストップワード(て、に、を、は、など)、HTMLタグの除去 SCOREING � 順位付けを計算する Luceneはこれらの機構も提供している
  • 23. キーワード:REST � REST = REpresentational State Transfer � � � � � 2000年にRoy Fielding氏が提唱した、分散システムにおいて複数の ソフトウェアを連携させるのに適した設計原則の集合 「セッションなどの状態管理を行わない(やり取りされる情報 はそれ自体で完結して解釈することができる)」 「情報を操作する命令の体系が予め定義・共有されている」 「すべての情報は汎用的な構文で一意に識別される」 「情報の内部に、別の情報や(その情報の別の)状態へのリ ンクを含めることができる」
  • 24. キーワード:RESTful API � RESTful API � RESTの考え方で、設計されたAPI � HTTPプロトコルでのAPI通信 アクセスメソッド(PUT/GET/POST/DELETE)でデータ に対する動作(Create / Read / Update / Delete)を指 定 � URLでデータを特定 � リンクとして他の情報を記述 � � 例: � Twitter, Facebookなどの各種API � ログイン、アクセス制限でセッションを使うことが多いので、厳 密ではないが。。
  • 25. キーワード:NoSQL � Not Only SQL � データベースはSQLだけじゃないぜ。(的なのり) � C10K問題への対応 � クライアント1万台問題(client 10,000)
  • 26. キーワード:NoSQL � リレーショナルDB (SQLのデータベース) � � � 理論的に整理され高性能 分散処理しづらい 明確な定義はないが、おおむね下記を備えたデータベース � 「“Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable.”」 (Elasticsearch as a NoSQL Database) � � 非リレーショナル、分散、オープンソース、水平スケール ElasticSearchもNoSQLの一種であると考える向きもある
  • 27. キーワード:NoSQL � タイプと実装 � Key Value Store � Redis � ...etc � Column Oriented � Cassandra � ...etc � Document Oriented � MongoDB � ...etc � ElasticSearch(?)
  • 28. OutLine ElasticSearchとは � さわってみる � キーワード � デモについて解説 � 情報源 �
  • 29. デモについて解説 � 使用プラグイン � elasticsearch-head � elasticsearch-HQ � elasticsearch-analysis-kuromoji
  • 30. デモについて解説: elasticsearch � 本体 � Dockerで入れました。 � 使用方法 � デプロイ docker pull reoring/docker-elasticsearch docker run -p 9200:9200 reoring/dockerelasticsearch � 今回は、nginxなどと動作するように調整
  • 31. デモについて解説: elasticsearch-head � 管理インターフェイスを提供するプラグイン � 使用方法 � プラグインインストール ./bin/plugin -i mobz/elasticsearch-head � アクセス http://localhost:9200/_plugin/head/
  • 32. デモについて解説: elasticsearch-HQ � 管理インターフェイスを提供するプラグイン � 使用方法 � プラグインインストール ./bin/plugin -i royrusso/elasticsearch-HQ � アクセス http://localhost:9200/_plugin/HQ/
  • 33. デモについて解説: elasticsearch-analysis-kuromoji � 日本語構文解析のプラグイン � 使用方法 � インストール ./bin/plugin -i elasticsearch/elasticsearch-analysis-kuromoji/1.7.0 � 設定 curl -XPUT 'localhost:9200/twitter' -d '{ "settings": { "analysis": { "analyzer": { "default" : { "type" : "kuromoji" } } } } }' � twitter以下のデータのデフォルトの解析器として利用される
  • 34. デモについて解説: その他 � 入れたかったもの � Kibanaやfluentdとの連動 � River系のプラグイン � elasticsearch-river-mongo � elasticsearch-river-rdbc � elasticsearch-river-fluentd まにあいませんでした。m(_ _)m
  • 35. OutLine ElasticSearchとは � さわってみる � キーワード � デモについて解説 � 情報源 �
  • 36. 情報源 � elasticsearchを紹介している記事を紹介 � チュートリアル � � � Elasticsearchチュートリアル http://code46.hatenablog.com/entry/2014/01/21/115620 fluentd + kibana � � ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ � http://www.slideshare.net/y-ken/elasticsearch-kibnana-fluentd-management-tips river-wikipedia � � � ElasticSearchにプラグインで日本語Wikipediaデータを入れてみました http://blog.johtani.info/blog/2013/08/23/index-wikipedia-ja-to-elasticsearch/ river-rdbc + kibana � � ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ � http://www.slideshare.net/y-ken/elasticsearch-kibnana-fluentd-management-tips river-mongodb � ElasticSearch + MongoDBをNode.jsで操作する � http://nextdeveloper.hatenablog.com/entry/2014/01/08/120203
  • 37. おわり � ご清聴ありがとうございます。

×