Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Ryoji Kurosawa
PPTX, PDF
2,649 views
Elasticsearch 変わり種プラグインの作り方
第10回elasticsearch勉強会 LTの資料です。
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 32
2
/ 32
3
/ 32
4
/ 32
5
/ 32
6
/ 32
7
/ 32
8
/ 32
9
/ 32
10
/ 32
11
/ 32
12
/ 32
13
/ 32
14
/ 32
15
/ 32
16
/ 32
17
/ 32
18
/ 32
19
/ 32
20
/ 32
21
/ 32
22
/ 32
23
/ 32
24
/ 32
25
/ 32
26
/ 32
27
/ 32
28
/ 32
29
/ 32
30
/ 32
31
/ 32
32
/ 32
More Related Content
PDF
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
by
Kentaro Yoshida
PDF
elasticsearchプラグイン入門
by
Shinsuke Sugaya
PPTX
Elasticsearchインデクシングのパフォーマンスを測ってみた
by
Ryoji Kurosawa
PDF
Elasticsearchで作る形態素解析サーバ
by
Shinsuke Sugaya
PDF
MySQLユーザ視点での小さく始めるElasticsearch
by
Kentaro Yoshida
PDF
ElasticSearch勉強会 第6回
by
Naoyuki Yamada
PDF
ElasticsearchとTasteプラグインで作るレコメンドシステム
by
Shinsuke Sugaya
PDF
Elasticsearch at CrowdWorks
by
佑介 九岡
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
by
Kentaro Yoshida
elasticsearchプラグイン入門
by
Shinsuke Sugaya
Elasticsearchインデクシングのパフォーマンスを測ってみた
by
Ryoji Kurosawa
Elasticsearchで作る形態素解析サーバ
by
Shinsuke Sugaya
MySQLユーザ視点での小さく始めるElasticsearch
by
Kentaro Yoshida
ElasticSearch勉強会 第6回
by
Naoyuki Yamada
ElasticsearchとTasteプラグインで作るレコメンドシステム
by
Shinsuke Sugaya
Elasticsearch at CrowdWorks
by
佑介 九岡
What's hot
PDF
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
by
VirtualTech Japan Inc.
PDF
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
by
Kentaro Yoshida
PDF
Fess/Elasticsearchを使った業務で使える?全文検索への道
by
Shinsuke Sugaya
PDF
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
by
Shinsuke Sugaya
PDF
ニコニコニュースと全文検索
by
techtalkdwango
PDF
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
by
Kentaro Yoshida
PDF
いろいろ考えると日本語の全文検索もMySQLがいいね!
by
Kouhei Sutou
PDF
Anemoneによるクローラー入門
by
Tasuku Nakano
PDF
Mroongaを選んだ理由と ちょっと嬉しかった話
by
Terui Masashi
PDF
Elasticsearchプラグインの作り方
by
Shinsuke Sugaya
PDF
はてなブックマークに基づく関連記事レコメンドエンジンの開発
by
Shunsuke Kozawa
PDF
Elasticsearchベースの全文検索システムFess
by
Shinsuke Sugaya
PDF
SolrとElasticsearchを比べてみよう
by
Shinsuke Sugaya
PDF
45分で理解する webクローリング入門 斉藤之雄
by
Yukio Saito
PDF
Elasticsearchのサジェスト機能を使った話
by
ktaro_w
PDF
PredictionIOでSparkMLを使った開発方法
by
Shinsuke Sugaya
PDF
Elasticsearch Authプラグインでアクセスコントロール
by
Shinsuke Sugaya
PDF
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
by
Naoyuki Yamada
PDF
20201102 postgresql unconference_debility
by
Satoshi Hirata
PDF
JPUGしくみ+アプリケーション勉強会(第28回)
by
Yoshinori Nakanishi
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
by
VirtualTech Japan Inc.
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
by
Kentaro Yoshida
Fess/Elasticsearchを使った業務で使える?全文検索への道
by
Shinsuke Sugaya
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
by
Shinsuke Sugaya
ニコニコニュースと全文検索
by
techtalkdwango
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
by
Kentaro Yoshida
いろいろ考えると日本語の全文検索もMySQLがいいね!
by
Kouhei Sutou
Anemoneによるクローラー入門
by
Tasuku Nakano
Mroongaを選んだ理由と ちょっと嬉しかった話
by
Terui Masashi
Elasticsearchプラグインの作り方
by
Shinsuke Sugaya
はてなブックマークに基づく関連記事レコメンドエンジンの開発
by
Shunsuke Kozawa
Elasticsearchベースの全文検索システムFess
by
Shinsuke Sugaya
SolrとElasticsearchを比べてみよう
by
Shinsuke Sugaya
45分で理解する webクローリング入門 斉藤之雄
by
Yukio Saito
Elasticsearchのサジェスト機能を使った話
by
ktaro_w
PredictionIOでSparkMLを使った開発方法
by
Shinsuke Sugaya
Elasticsearch Authプラグインでアクセスコントロール
by
Shinsuke Sugaya
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
by
Naoyuki Yamada
20201102 postgresql unconference_debility
by
Satoshi Hirata
JPUGしくみ+アプリケーション勉強会(第28回)
by
Yoshinori Nakanishi
Recently uploaded
PDF
Drupal Recipes 解説 .
by
iPride Co., Ltd.
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PPTX
ddevについて .
by
iPride Co., Ltd.
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
Drupal Recipes 解説 .
by
iPride Co., Ltd.
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
ddevについて .
by
iPride Co., Ltd.
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
Elasticsearch 変わり種プラグインの作り方
1.
変わり種プラグインの 作り方 黒澤亮二
2.
自己紹介 • 黒澤亮二 @rjkuro •
日本IBM • データベース周辺の製品開発 • Elasticsearch暦 1年 • 最近の興味: 分散データベース NoSQL Search/Analysis
3.
disclaimer • 嘘知識を聴く可能性があります • 聞き間違いだと思ってください •
資料は後からこっそり直す可能性があります • 本資料は私自身の見解であり、必ずしも私の所属 する組織の立場、戦略、意見を代表するものでは ありません。
4.
本日の主張 つくれるよ いろんな プラグイン
5.
Elasticsearchはプラグイ ンで機能を追加できる
6.
既存のたくさんあるし
7.
簡単につくれるよ maven bin/plugin --install myplugin
--url file:///test/myplugin.zip pom.xml es-plugin.properties plugin.xml MyPlugin.java MyModule.java myplugin.zip
8.
プラグイン作れると いいことあるよ アプリ Elasticsearch アプリでの処理を…
9.
プラグイン作れると いいことあるよ アプリ Elasticsearch Elasticsearchノードで動かせる!!
10.
スケールする! アプリ Elasticsearch Elasticsearch Elasticsearch
Elasticsearch
11.
スケールする!! アプリ Elastic Elastic
Elastic Elastic Elastic Elastic Elastic Elastic Elastic
12.
スケールする!!! アプ リ
13.
いろいろできるよ モジュールで「登録メソッド」をよんで 新機能を差しこめる! Riverプラグインはこれ Analyzerプラグインはこれ https://www.found.no/foundation/elasticsearch-internals/
14.
登録メソッドたくさん! AnalysisModule.addTokenizer(String name, Class<?
extends TokenizerFactory> tokenizer) AnalysisModule.addTokenFilter(String name, Class<? extends TokenFilterFactory> tokenFilter) AnalysisModule.addCharFilter(String name, Class<? extends CharFilterFactory> charFilter) AnalysisModule.addAnalyzer(String name, Class<? extends AnalyzerProvider> analyzer) RestController.registerHandler(RestRequest.Method method, String path, RestHandler handler) RestModule.addRestAction(Class<? extends BaseRestHandler> restAction) DocumentMapperParser.putTypeParser(String type, Mapper.TypeParser typeParser) HighlightModule.registerHighlighter(Class<? extends Highlighter> clazz) IndicesLifecycle.addListener(Listener listener) IndexQueryParserModule.addQueryParser(String name, Class<? extends QueryParser> queryParser) プラグイン専用ではなく Elasticsearch本体も使ってます
15.
プラグインから 登録メソッド どうやって呼ぶか?
16.
1. es-plugin.propertiesに自分のPluginクラ ス名を書く 2. Pluginクラスで自分のModuleクラスを登 録(onModuleがあればここで登録メソッ ドを呼べる場合も) 3.
自分のModuleクラスのconfigure()に自 分のコンポーネントの生成方法を指定 4. コンポーネントのクラスのコンストラクタ に@injectionをつける 5. コンストラクタの引数にほしいものを書く 6. 受け取ったものを使って登録メソッドを 呼ぶ
17.
1. es-plugin.propertiesに自分のPluginクラ ス名を書く 2. Pluginクラスで自分のModuleクラスを登 録(onModuleがあればここで登録メソッ ドを呼べる場合も) 3.
自分のModuleクラスのconfigure()に自 分のコンポーネントの生成方法を指定 4. コンポーネントのクラスのコンストラクタ に@injectionをつける 5. コンストラクタの引数にほしいものを書く 6. 受け取ったものを使って登録メソッドを 呼ぶ → 例で
18.
例 Mapper プラグイン Mapperモジュール
19.
plugin=myplugin.MyPlugin public class MyPlugin
extends AbstractPlugin { public Collection<Class<? extends Module>> indexModules() { Collection<Class<? extends Module>> modules = Lists.newArrayList(); modules.add(MyMapperModule.class); return modules; } … … 私のプラグインのクラス名 私のモジュールを登録 es-plugin.properties
20.
public class MyMapperModule
extends AbstractModule { @Override protected void configure() { bind(MyMapperComponent.class).asEagerSingleton(); } } public class MyMapperComponent extends AbstractIndexComponent { @Inject public MyMapperComponent(Index index, @IndexSettings Settings indexSettings, MapperService mapperService) { super(index, indexSettings); mapperService.documentMapperParser() .putTypeParser("my_type", new MyMapper.TypeParser()); } } 「私のクラスを起動時に生成してよー」 欲しいものを 渡してもらって 登録メソッドが呼べた ここでGuiceのおまじないをすると…
21.
使いみちは、 Index時の事前処理とか PUT /test/person/1 { "my_content" :
"... 長い文章 ..." } { “content” : “... 処理済の文章 ...", }
22.
解析処理をしてフィール ド追加とかできる! PUT /test/person/1 { "my_content" :
"... 長い文章 ..." } { "content" : "... 長い文章 ...", "language" : "ja", "classification" : "essay", "sentiment" : "positive", "advertised_products" : { ... } … }
23.
なにか既視感?
24.
元ネタは attachmentプラグイン PUT /test/person/1 { "my_attachment" :
"... base64 ..." } { "my_attachment.title" : ".…", "my_attachment.date" : "...", "my_attachment.author" : "….", "my_attachment.keywords" : "…", "my_attachment.content_type" : "…", " … } というわけで詳しくは: https://github.com/elastic/elasticsearch-mapper-attachments
25.
例2:Custom query parser Queryモジュール
26.
使いみち • Matchクエリ/Query Stringクエリでは物足りない場 合 •
スコアを細かく制御したい場合 • インデックスに特殊な構造を持たせてそれを検索 に利用したい場合 → 自前のシンタックスを実装したり LuceneのQuery自体をカスタムして利用できる
27.
登録メソッドを持ったオブジェクト が渡されてくる楽なパターン public class MyPlugin
extends AbstractPlugin { public void onModule(IndexQueryParserModule module) { module.addQueryParser("my_query", MyQueryParser.class); } … … 登録メソッドここで呼べちゃう public class MyQueryParser implements QueryParser { public Query parse(QueryParseContext parseContext) throws IOException, QueryParsingException { XContentParser parser = parseContext.parser(); Token curToken = parser.currentToken(); … … トークンをパースしてQueryを返す処理 … … Luceneの オブジェク トを返せる
28.
例その3:Lifecycleイベント処理 Indicesモジュール IndicesLifecycleインターフェース
29.
イベントを フックして処理を挿入できる! - インデックスやシャードの open/closeの前後 - シャード移動の前後など
30.
public class MyLifeCycleModule
extends AbstractModule { @Override protected void configure() { bind(MyLifeCycleComponent.class).asEagerSingleton(); } } 「私のクラスを(ry 」 public class MyLifecycleComponent extends AbstractComponent { @Inject public MyLifecycleComponent(Settings settings, IndicesLifecycle indicesLifecycle) { super(settings); indicesLifecycle.addListener( new IndicesLifecycle.Listener() { @Override public void afterIndexCreated(IndexService indexService) { … indexがopenされたときの処理 … } 登録メソッド
31.
まとめ • プラグインは使うだけじゃない • いろいろ作れる •
スケールさせやすい • Guiceが欲しいオブジェクトを渡してくれる • ストアドプロシージャー的な使い方もありかも
32.
参考資料 プラグイン一般 https://www.found.no/foundation/elasticsearch- internals/ https://www.found.no/foundation/writing-a-plugin/ Attachment mapper plugin https://github.com/elastic/elasticsearch-mapper- attachments Elasticsearch
reference https://www.elastic.co/guide/en/elasticsearch/reference /1.5/index.html
Download