SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
ElasticSearchとは?
OutLine
ElasticSearch
ElasticSearchとは
� さわってみる
� キーワード
� デモについて解説
� 情報源
�
ElasticSearchとは
�

elastic
� 弾力のある,伸縮自在の
� しなやかな.
� 〈人・感情など〉不幸があってもすぐ立ち直る,容易に屈し

ない; 屈託のない.
� 〈規則・考え方など〉融通性のある.
� 不可算名詞: ゴムひも,ゴム入り生地
� 可算名詞 《主に米国で用いられる》 輪ゴム.

研究社 新英和中辞典
ElasticSearchとは
【全文検索】機能を、
� 【RESTful】 APIで提供する、
� ソフトウェア(あるいはフレームワーク)
�

(独断と偏見に基づく)
ElasticSearchとは
全文検索エンジンApache Luceneがベース
� RESTful APIで操作
� 分散処理のサポート
�

� シャーディング、レプリケーション

�

プラグインによる拡張
� river
� analysis

入力系
【構文解析】など
ElasticSearchとは
�

どこで使われているか
� foursquare

...など?
OutLine
ElasticSearchとは
� さわってみる
� キーワード
� デモについて解説
� 情報源
�
さわってみる
�

とりあえずデモ
� http://<demo
�

server ipaddr>/page/

docker run -d otolab/demo20140212-elasticsearch /usr/local/bin/init.sh
�

公開予定
さわってみる:デモのコード
�

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>
さわってみる:デモのコード
�

書き込み
$('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)); }
);
});
さわってみる:デモのコード
�

検索
$('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); }
);
});
さわってみる:デモのコード
�

AJAX部分
function send(method, url, data, success){
$.ajax({
url: url,
type: method,
dataType: 'json',
data: JSON.stringify(data),
success: success
});
}
さわってみる
�

管理プラグイン
� HQ
� head
OutLine
ElasticSearchとは
� さわってみる
� キーワード
� デモについて解説
� 情報源
�
キーワード
Apache Lucene
� 全文検索
�

� 転置インデックス
� N-Gram
� 形態素解析

REST / RESTful API
� NoSQL
�
キーワード:Apache Lucene
�

Apacheのプロジェクトの一つ
全文検索エンジンライブラリ
� 100% Pure Java
� 1000万ドキュメント程度の規模まで1台で可能
�

�

使われているサービス
Wikipedia
� LinkedIn
� EcripseIDE
� Apache Solr
�

�

Web検索機能ソフトウェア
キーワード:Apache Lucene
入力の解析、クエリの解析
� 転置インデックスによる検索
� 結果のスコアリング
�

...などをサポート

出典:https://www.ibm.com/developerworks/jp/opensource/library/os-apache-lucenesearch/
キーワード:全文検索
�

全文検索 = Full Text Search
� 文章等のごく一部を高速に探し出す検索

�

転置インデックス
� キーワードがどのデータに属するか?を記録
� データ(文書)からキーワードを抽出する必要がある

�

(参考)B-Treeインデックス
�
�

完全一致(と前方一致)がきわめて高速
曖昧な検索には強くない
キーワード:転置インデックス
�

文章に単語が含まれる
⇔ 単語が含まれる文章を探す

出典:http://thinkit.co.jp/free/article/0710/17/1/
キーワード:N-gram
�

N-gram
� 決まった文字数で分割を繰り返す

出典:http://handin.sakura.ne.jp/archives/179
キーワード:形態素解析
�

形態素解析
� 日本語の文法構造と辞書などから、単語を分割

(+意味づけ)
� 実装としては。。

MeCab系(MeCab、Sen、Chasen、Gosen)
� KyTea
� Kuromoji
�
キーワード:全文検索
�

文章(自然言語)を快適に検索するためには...
�

TOKENING
�
�

�

STEMMING
�

�

Fishing, fished, Fish, Fisher > fish

FILTERLING
�

�

, ()など記号での分割、日本語の分かち書き化
N-gram、形態素解析

ストップワード(て、に、を、は、など)、HTMLタグの除去

SCOREING
�

順位付けを計算する

Luceneはこれらの機構も提供している
キーワード:REST
�

REST = REpresentational State Transfer
�

�
�
�
�

2000年にRoy Fielding氏が提唱した、分散システムにおいて複数の
ソフトウェアを連携させるのに適した設計原則の集合

「セッションなどの状態管理を行わない(やり取りされる情報
はそれ自体で完結して解釈することができる)」
「情報を操作する命令の体系が予め定義・共有されている」
「すべての情報は汎用的な構文で一意に識別される」
「情報の内部に、別の情報や(その情報の別の)状態へのリ
ンクを含めることができる」
キーワード:RESTful API
�

RESTful API
� RESTの考え方で、設計されたAPI
� HTTPプロトコルでのAPI通信

アクセスメソッド(PUT/GET/POST/DELETE)でデータ
に対する動作(Create / Read / Update / Delete)を指
定
� URLでデータを特定
� リンクとして他の情報を記述
�

� 例:
�

Twitter, Facebookなどの各種API
�

ログイン、アクセス制限でセッションを使うことが多いので、厳
密ではないが。。
キーワード:NoSQL
�

Not Only SQL
� データベースはSQLだけじゃないぜ。(的なのり)

�

C10K問題への対応
� クライアント1万台問題(client

10,000)
キーワード: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の一種であると考える向きもある
キーワード:NoSQL
�

タイプと実装
� Key Value Store
� Redis
� ...etc
� Column Oriented
� Cassandra
� ...etc
� Document Oriented
� MongoDB
� ...etc
� ElasticSearch(?)
OutLine
ElasticSearchとは
� さわってみる
� キーワード
� デモについて解説
� 情報源
�
デモについて解説
�

使用プラグイン
� elasticsearch-head
� elasticsearch-HQ
� elasticsearch-analysis-kuromoji
デモについて解説:
elasticsearch
�

本体
� Dockerで入れました。

�

使用方法
� デプロイ

docker pull reoring/docker-elasticsearch
docker run -p 9200:9200 reoring/dockerelasticsearch
� 今回は、nginxなどと動作するように調整
デモについて解説:
elasticsearch-head
�

管理インターフェイスを提供するプラグイン

�

使用方法
� プラグインインストール

./bin/plugin -i mobz/elasticsearch-head
� アクセス

http://localhost:9200/_plugin/head/
デモについて解説:

elasticsearch-HQ
�

管理インターフェイスを提供するプラグイン

�

使用方法
� プラグインインストール

./bin/plugin -i royrusso/elasticsearch-HQ
� アクセス

http://localhost:9200/_plugin/HQ/
デモについて解説:

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以下のデータのデフォルトの解析器として利用される
デモについて解説:
その他
�

入れたかったもの
� Kibanaやfluentdとの連動
� River系のプラグイン
� elasticsearch-river-mongo
� elasticsearch-river-rdbc
� elasticsearch-river-fluentd

まにあいませんでした。m(_ _)m
OutLine
ElasticSearchとは
� さわってみる
� キーワード
� デモについて解説
� 情報源
�
情報源
�

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
おわり
�

ご清聴ありがとうございます。

Weitere ähnliche Inhalte

Mehr von エンジニア勉強会 エスキュービズム

Mehr von エンジニア勉強会 エスキュービズム (20)

Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
Winストアアプリでble接続
Winストアアプリでble接続Winストアアプリでble接続
Winストアアプリでble接続
 
de:code 2015
de:code 2015de:code 2015
de:code 2015
 
理想のWEB開発
理想のWEB開発理想のWEB開発
理想のWEB開発
 

Kürzlich hochgeladen

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Kürzlich hochgeladen (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

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