SlideShare a Scribd company logo
1 of 13
実践Elasticsearch(2.1.1)
2016-01-22
社内勉強会
Tsuyoshi Nakamura
全文検索エンジンとしては色々な歴史をたどってきましたが、今は全文検索エ
ンジンといえば”Elasticsearch”が良いみたいな感じで、AWSにも登場
Agenda
• Installからconfig設定
• Kuromoji
• Analysisモジュール
• 主要モジュール
• Demo
• 調査やり残し
Install 〜 config
• Javaはyumでinstall
• Elasticsearchは公式のrepositoriesからkeyをinport.
• Yum設定してyum installで最新(2.1.1)が入る
• 日本語の全文検索に必要なpluginをinstall
Kuromoji plugin install
bin/plugin install analysis-kuromoji
※https://www.elastic.co/guide/en/elasticsearch/plugins/master/analysis-
kuromoji.html
※https://github.com/elastic/elasticsearch-analysis-kuromoji
Kuromoji
• 木の名前(クロモジ?)?楊枝の黒文字?
• 分からないけど超絶便利
• Solrいじってた時は日本語用の辞書(MecabやらChasenやら)を自分で
入れて、、、と色々と面倒だったけた
Analysisモジュール
Analyzer
• 複数設定可能
• トークナイズ処理(形態素解析)
• フィルター処理
Indexを作成する時、検索する時はこんな処理が行われる
Analysisモジュール
Tokenizer
• トークナイズ方式を設定
• Kuromojiを使ってトークナイズするとか
• ngram式にトークナイズするとか
Token Filters
• トークナイズ処理後のトークンに対して加工処理をする
• 全角英数字を半角に直し,半角カタカナを全角に直すとか
Char Filters
• トークナイズ処理前の文字に対して加工処理をする
• 記号だったり、「々」だったりを除去する時に使う
主要モジュール
Ngram Tkenizer
• N-グラムでトークナイズ。Elasticsearchにある
cjk_width Token Filter
• 半角全角を統一するフィルタ。Elasticsearchにある
Lowercase Token Filter
• 英字の大文字小文字を統一するフィルタ。Elasticsearchにある
Synonym Token Filter
• 同義語を結びつけるフィルタ。Elasticsearchにある
Stop Token Filter
• 任意のワードを除去するフィルタ。Elasticsearchにある
HTML Strip Char Filter
• HTMLタグを除去するフィルタ。Elasticsearchにある
今回作ったconfig(elasticsearch.yml)
# ---------------------------------- Index -----------------------------------
index :
analysis :
analyzer :
ja :
type : custom
tokenizer : ja_tokenizer
char_filter : [
html_strip,
kuromoji_iteration_mark
]
filter : [
lowercase,
cjk_width,
katakana_stemmer,
kuromoji_part_of_speech
]
ja_ngram :
type : custom
tokenizer : ngram_ja_tokenizer
char_filter : [html_strip]
filter : [
cjk_width,
lowercase
]
tokenizer :
ja_tokenizer :
type : kuromoji_tokenizer
mode : search
user_dictionary : /etc/elasticsearch/userdict_ja.txt
ngram_ja_tokenizer :
type : nGram
min_gram : 2
max_gram : 3
token_chars : [letter, digit]
filter :
katakana_stemmer :
type : kuromoji_stemmer
今回作ったindex mapping
{
"order": 0,
"template": "projects01-*",
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "0"
}
},
"mappings": {
"project": {
"_source": {
"enabled": false
},
"_all": {
"analyzer": "ja",
"enabled": true
},
"properties": {
"update_time": {
"format": "YYYY-MM-dd HH:mm:ss",
"type": "date"
},
"project_id": {
"index": "not_analyzed",
"type": "string"
},
"detail": {
"analyzer": "ja",
"type": "string"
},
"suggest": {
"search_analyzer": "ja",
"analyzer": "ja",
"type": "completion"
},
"detail_ngram": {
"analyzer": "ja_ngram",
"type": "string"
},
"title": {
"analyzer": "ja",
"type": "string"
},
"title_ngram": {
"analyzer": "ja_ngram",
"type": "string"
}
}
}
},
"aliases": {
}
Demo
Demo
• Elasticsearchの管理ツール(kopf)を見る
• いろいろ機能ある。
• Mappingとかここで登録した
• 便利、かっこいい
• Indexを作ってみる
• 検索してみる
• サジェスト機能(completion)つかってみる
まだ調査が必要な箇所
• Indexの運用、更新フロー
• Pyhon curator
• Score
• 同じ検索でも現在進行しているPJを検索結果の上位へみたいな要件
が出てきそう
• Slowクエリとかの閾値
• ES_HEAP_SIZE、スワップ
• cluster、shard、replica
• Indexのバックアップ、リストア
• Pyhon製のtool、_snapshot、バイナリバックアップ
• Facet? Aggregationsでいける?

More Related Content

What's hot

Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryAnsible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryHideki Saito
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編Hideki Saito
 
Cloud Foundry Admin UI v2を使ってみた
Cloud Foundry Admin UI v2を使ってみたCloud Foundry Admin UI v2を使ってみた
Cloud Foundry Admin UI v2を使ってみたi_yudai
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化Hideki Saito
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LTYoshinari Kadokawa
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014VirtualTech Japan Inc.
 
MUGT02 - vamp demo
MUGT02 - vamp demoMUGT02 - vamp demo
MUGT02 - vamp demoTetsuya Sodo
 
OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築guchi_hiro
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016Hideki Saito
 
DevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHDevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHi_yudai
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)さくらインターネット株式会社
 
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~gree_tech
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編irix_jp
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースJunichi Noda
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいKazuhiro Oinuma
 

What's hot (20)

Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryAnsible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
 
Cloud Foundry Admin UI v2を使ってみた
Cloud Foundry Admin UI v2を使ってみたCloud Foundry Admin UI v2を使ってみた
Cloud Foundry Admin UI v2を使ってみた
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 
Osdt2015 saito
Osdt2015 saitoOsdt2015 saito
Osdt2015 saito
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
 
MUGT02 - vamp demo
MUGT02 - vamp demoMUGT02 - vamp demo
MUGT02 - vamp demo
 
OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016
 
DevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHDevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSH
 
Ansible Module Topic
Ansible Module Topic Ansible Module Topic
Ansible Module Topic
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
 
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケース
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
「Windows Azureで HPC 」 for JAZUG 2013年9月
「Windows Azureで HPC 」 for JAZUG 2013年9月「Windows Azureで HPC 」 for JAZUG 2013年9月
「Windows Azureで HPC 」 for JAZUG 2013年9月
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 

Similar to Elasticsearct2.1

JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】Yukihiko SAWANOBORI
 
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...Sadao Tokuyama
 
Elasticsearch 変わり種プラグインの作り方
Elasticsearch 変わり種プラグインの作り方Elasticsearch 変わり種プラグインの作り方
Elasticsearch 変わり種プラグインの作り方Ryoji Kurosawa
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!Wataru NOGUCHI
 
Apache Auroraの始めかた
Apache Auroraの始めかたApache Auroraの始めかた
Apache Auroraの始めかたMasahito Zembutsu
 
Integrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreIntegrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreShotaro Suzuki
 
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用Inoue Seki
 
20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStackAkihiro Motoki
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)VirtualTech Japan Inc.
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料Takahiro Iwase
 
Elasticsearch勉強会_NLPQA.pptx
Elasticsearch勉強会_NLPQA.pptxElasticsearch勉強会_NLPQA.pptx
Elasticsearch勉強会_NLPQA.pptxshinhiguchi
 
elasticsearchプラグイン入門
elasticsearchプラグイン入門elasticsearchプラグイン入門
elasticsearchプラグイン入門Shinsuke Sugaya
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 Yasuhiro Matsuo
 
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習Hori Tasuku
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 

Similar to Elasticsearct2.1 (20)

JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
 
Elasticsearch 変わり種プラグインの作り方
Elasticsearch 変わり種プラグインの作り方Elasticsearch 変わり種プラグインの作り方
Elasticsearch 変わり種プラグインの作り方
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
 
Apache Auroraの始めかた
Apache Auroraの始めかたApache Auroraの始めかた
Apache Auroraの始めかた
 
Integrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreIntegrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net core
 
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
 
mysqlftppc 紹介
mysqlftppc 紹介mysqlftppc 紹介
mysqlftppc 紹介
 
20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
 
Elasticsearch勉強会_NLPQA.pptx
Elasticsearch勉強会_NLPQA.pptxElasticsearch勉強会_NLPQA.pptx
Elasticsearch勉強会_NLPQA.pptx
 
2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
 
elasticsearchプラグイン入門
elasticsearchプラグイン入門elasticsearchプラグイン入門
elasticsearchプラグイン入門
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016
 
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 

Elasticsearct2.1