Enviar búsqueda
Cargar
Elasticsearch 変わり種プラグインの作り方
•
Descargar como PPTX, PDF
•
2 recomendaciones
•
2,633 vistas
Ryoji Kurosawa
Seguir
第10回elasticsearch勉強会 LTの資料です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 32
Descargar ahora
Recomendados
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
佑介 九岡
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
Naoyuki Yamada
Elasticsearchインデクシングのパフォーマンスを測ってみた
Elasticsearchインデクシングのパフォーマンスを測ってみた
Ryoji Kurosawa
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
Shinsuke Sugaya
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
elasticsearchプラグイン入門
elasticsearchプラグイン入門
Shinsuke Sugaya
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
Shinsuke Sugaya
Recomendados
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
佑介 九岡
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
Naoyuki Yamada
Elasticsearchインデクシングのパフォーマンスを測ってみた
Elasticsearchインデクシングのパフォーマンスを測ってみた
Ryoji Kurosawa
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
Shinsuke Sugaya
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
elasticsearchプラグイン入門
elasticsearchプラグイン入門
Shinsuke Sugaya
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
Shinsuke Sugaya
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
ニコニコニュースと全文検索
ニコニコニュースと全文検索
techtalkdwango
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Shunsuke Kozawa
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
Yukio Saito
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
VirtualTech Japan Inc.
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Kentaro Yoshida
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
Naoyuki Yamada
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
Shinsuke Sugaya
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
Shinsuke Sugaya
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
Shinsuke Sugaya
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Satoshi Hirata
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
Terui Masashi
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
Kentaro Yoshida
PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法
Shinsuke Sugaya
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
Shinsuke Sugaya
Anemoneによるクローラー入門
Anemoneによるクローラー入門
Tasuku Nakano
JPUGしくみ+アプリケーション勉強会(第28回)
JPUGしくみ+アプリケーション勉強会(第28回)
Yoshinori Nakanishi
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
snicker_jp
全文検索入門
全文検索入門
antibayesian 俺がS式だ
Más contenido relacionado
La actualidad más candente
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
ニコニコニュースと全文検索
ニコニコニュースと全文検索
techtalkdwango
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Shunsuke Kozawa
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
Yukio Saito
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
VirtualTech Japan Inc.
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Kentaro Yoshida
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
Naoyuki Yamada
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
Shinsuke Sugaya
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
Shinsuke Sugaya
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
Shinsuke Sugaya
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Satoshi Hirata
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
Terui Masashi
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
Kentaro Yoshida
PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法
Shinsuke Sugaya
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
Shinsuke Sugaya
Anemoneによるクローラー入門
Anemoneによるクローラー入門
Tasuku Nakano
JPUGしくみ+アプリケーション勉強会(第28回)
JPUGしくみ+アプリケーション勉強会(第28回)
Yoshinori Nakanishi
La actualidad más candente
(20)
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ニコニコニュースと全文検索
ニコニコニュースと全文検索
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
Elasticsearch勉強会第8回 ElasticsearchとKibanaで実現する 30億req/dayのリアルタイム分析
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
Anemoneによるクローラー入門
Anemoneによるクローラー入門
JPUGしくみ+アプリケーション勉強会(第28回)
JPUGしくみ+アプリケーション勉強会(第28回)
Similar a Elasticsearch 変わり種プラグインの作り方
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
snicker_jp
全文検索入門
全文検索入門
antibayesian 俺がS式だ
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
Takuya Nishimoto
Building modernapplicationwithelasiccloud
Building modernapplicationwithelasiccloud
Shotaro Suzuki
Web技術勉強会第1回目
Web技術勉強会第1回目
龍一 田中
次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解く
Shin Takeuchi
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方
Yoshitaka Seo
Getting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.js
Eiji Shinohara
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
Introducing the elastic 8.0 release a new era of speed, scale, relevance, and...
Introducing the elastic 8.0 release a new era of speed, scale, relevance, and...
Shotaro Suzuki
Oracle how-to-audit-backup
Oracle how-to-audit-backup
Daiki Mogmet Ito
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
Eiji Shinohara
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
Kiyokazu Kaba
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
サーバレスで分析基盤〜ブートキャンプに参加してみた〜
サーバレスで分析基盤〜ブートキャンプに参加してみた〜
Y K
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
IIJ
リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話
Shohei Koyama
Similar a Elasticsearch 変わり種プラグインの作り方
(20)
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
全文検索入門
全文検索入門
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
Building modernapplicationwithelasiccloud
Building modernapplicationwithelasiccloud
Web技術勉強会第1回目
Web技術勉強会第1回目
次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解く
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方
Getting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.js
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Introducing the elastic 8.0 release a new era of speed, scale, relevance, and...
Introducing the elastic 8.0 release a new era of speed, scale, relevance, and...
Oracle how-to-audit-backup
Oracle how-to-audit-backup
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
サーバレスで分析基盤〜ブートキャンプに参加してみた〜
サーバレスで分析基盤〜ブートキャンプに参加してみた〜
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話
Último
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Último
(8)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
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
Descargar ahora