SlideShare a Scribd company logo
1 of 168
Download to read offline
【渋谷・大阪】GMO次世代勉強会 Elasticsearchを実業務に適用してみた
実践‼
Elasticsearch + Sudachi
を用いた 全文検索エンジン構築
GMOインターネット 次世代システム研究室
背景
1
https://point.gmo.jp/shopping/top
連携商材を利用したネットショップの商品のリンク集
GMO ポイントモール
背景
2
関係のない商品がたくさんヒットする……
背景
3
なんとかしなければ……
背景
4
リニューアルの話が‼
背景
5
商品検索機能のバックエンドを
Elasticsearch に変更
背景
6
このタイミングで
改善しなければ‼
背景
7
四苦八苦した記録です
この資料は Elasticsearch を初めて触った人が
目的・背景
8
業務:Elasticsearch で全文検索システム構築
実際に動くものを作る過程を
業務への適用例を交えて紹介
様々なバージョン の情報が混在
試行錯誤 が必要
大規模すぎる例 が多い
対象とする方
9
初学者~実運用を考えている向け
ログ集積・分析基盤を作ってみたい
社内ドキュメント検索システムを作ってみたい
対象とする方
10
初学者~実運用を考えている向け
ログ集積・分析基盤を作ってみたい
社内ドキュメント検索システムを作ってみたい
明日から使える
かも
アジェンダ
11
基礎編
入門編
実践編
Elasticsearch のしくみ
実際に動かしてみる
実業務への適用例の紹介
⚫ Elasticsearch の紹介
⚫ Elasticsearch のアーキテクチャ
⚫ データの登録・検索
12
基礎編
Elasticsearch
は何ができる?
13
Elasticsearchは何ができる?
14
検索
できます
Elasticsearchは何ができる?
15
Elasticsearch
りんごの旬である
秋から冬にかけて~
みかんの木は
およそ3~4年で~
Elasticsearchは何ができる?
16
Elasticsearch
りんご
りんごの旬である
秋から冬にかけて~
Elasticsearch
17
全文検索エンジン
複数の文書 の 全文 を対象に
特定のキーワード を検索するソフトウェア
ドキュメント検索やログ蓄積・集計・分析に活用
Elasticsearch
18
Elastic 社が開発
2010 年リリース
最新版は 7.0.0(4/11 現在)
Apache 2.0 ライセンスの OSS
有償オプション X-Pack
(監視や機械学習の機能を提供)
RDBとの違い
19
RDB 全文検索エンジン
重要視 トランザクション スケーラビリティ
インタフェース SQL(汎用性) 検索特化クエリ
検索結果 全件取得 スコアリング
データを蓄積するのは同じ
RDBとの違い
20
RDB 全文検索エンジン
重要視 トランザクション スケーラビリティ
インタフェース SQL(汎用性) 検索特化クエリ
検索結果 全件取得 スコアリング
用途が全く異なる
使いどころを見極める
Solr との違い
21
Solr Elasticsearch
基盤 Apache Lucene Apache Lucene
クラスタ Apache ZooKeeper 起動するだけ
クエリ Key=Value DSL
実績と信頼がある 企業により開発
採用例増えてる
Solr との違い
22
Solr Elasticsearch
基盤 Apache Lucene Apache Lucene
クラスタ Apache ZooKeeper 起動するだけ
クエリ Key=Value DSL
実績と信頼がある 企業により開発
採用例増えてる
⚫ Elasticsearch の紹介
⚫ Elasticsearch のアーキテクチャ
⚫ データの登録・検索
23
基礎編
Elasticsearch のアーキテクチャ
24
データ構造
どうなってるの?
Elasticsearch のアーキテクチャ
25
Index
Index RDB のテーブルに相当
Document 1 / Field1:abc Field2:123 Field3:3/25
Document 2 / Field1:あお Field2:56 Field3:12/21
Document RDB のレコードに相当
Mapping フィールドの定義
Mapping
Field1:text
Field2:integer
Field3:date
Elasticsearch のアーキテクチャ
26
Type Elasticsearch 7~8 系で廃止予定
名前を _doc とすることが推奨されている
Index
_doc
Document 1 / Field1:abc Field2:123 Field3:3/25
Document 2 / Field1:あお Field2:56 Field3:12/21
Mapping
Field1:text
Field2:integer
Field3:date
Elasticsearch のアーキテクチャ
27
いまから使うならこのイメージでOK
Index
Document 1 / Field1:abc Field2:123 Field3:3/25
Document 2 / Field1:あお Field2:56 Field3:12/21
Mapping
Field1:text
Field2:integer
Field3:date
Elasticsearch のアーキテクチャ
28
ニュース記事の例
news
ID 001 / Title:渋滞予測 Body:大和TN 30km …
ID 002 / Title:関東で桜満開 Body: … Published: 3/29
Mapping
Title:text
Body:text
Published:date
Elasticsearch のアーキテクチャ
29
Index
Field1: ABC
Field2:1234
Document 登録
マッピング生成
Elasticsearch のアーキテクチャ
30
Index
Field1: ABC
Field2:1234
自動で作成
型も自動で決定
Field1:text
Field2:text
マッピング生成
Elasticsearch のアーキテクチャ
31
Index
Field1: ABC
Field2:1234
Field3:XYZ
マッピングは自動で追加
Field1:text
Field2:text
Field3:text
マッピング生成
Elasticsearch のアーキテクチャ
32
Index
Field1: ABC
Field2:1234
Field3:XYZ
Filed 2 は数値のつもり
Field1:text
Field2:text
Field3:text
マッピング生成
Elasticsearch のアーキテクチャ
33
Index
Field2 を集計!
text を集計……?
Field1:text
Field2:text
Field3:text
マッピング生成
Elasticsearch のアーキテクチャ
34
Index
“Field1”:{“type”:”text”}
“Field2”:{“type”:” integer”}
あらかじめ指定することもできる
こちらのほうがオススメ
Field1:text
Field2:integer
マッピング生成
Elasticsearch のアーキテクチャ
35
Index のディスク上の実体
Index
Document 1
Document 2
Document 3
Shard
Shard
Elasticsearch のアーキテクチャ
36
任意の数に分割可能
Shard 1
Shard 2
Shard 3
Shard 4
Index
Document 1
Document 2
Document 3
Elasticsearch のアーキテクチャ
37
Index
Document 1
Document 2
Document 3
1
2
3
4
1
2
3
4
1
2
3
4
Shard の複製 任意の数作成可能
Replica
Elasticsearch のアーキテクチャ
38
ノード ノード ノード
Index
Index
複数ノードに分割して配置
Elasticsearch のアーキテクチャ
39
スケールしやすそう
⚫ Elasticsearch の紹介
⚫ Elasticsearch のアーキテクチャ
⚫ データの登録・検索
40
基礎編
Elasticsearch の登録・検索
41
REST API
POST /{index名}/_doc
PUT /{index名}/_doc/{ID}
GET /{index名}/_doc/{ID}
DELETE /{index名}/_doc/{ID}
BULK API
POST /_bulk ※JSON で詳細指定
Elasticsearch の登録・検索
42
りんごの旬である
秋から冬にかけて~
これらのドキュメントを登録したい
パイの具としては
りんごを砂糖で煮た~
Elasticsearch の登録・検索
43
りんごの旬である
秋から冬にかけて~
これらのドキュメントを登録したい
パイの具としては
りんごを砂糖で煮た~
ID : 1 ID : 2
単語を拾う
りんご
秋
冬
パイ
りんご
砂糖
Elasticsearch の登録・検索
44
りんごの旬である
秋から冬にかけて~
このままだと ID → 単語
パイの具としては
りんごを砂糖で煮た~
ID : 1 ID : 2
りんご
秋
冬
パイ
りんご
砂糖
Elasticsearch の登録・検索
45
りんごの旬である
秋から冬にかけて~
単語 → ID の表をつくる
パイの具としては
りんごを砂糖で煮た~
ID : 1 ID : 2
りんご 1, 2
秋 1
冬 1
パイ 2
砂糖 2
転置インデックス
転置インデックスによる検索
46
りんご で検索!
りんご 1, 2
秋 1
冬 1
パイ 2
砂糖 2
りんごの旬である
秋から冬にかけて~
パイの具としては
りんごを砂糖で煮た~
2件ヒット
形態素解析
47
りんごの旬である
秋から冬にかけて~
りんご
秋
冬
単語を拾う処理
日本語は空白で切れない
辞書・文法ベースで区切る
形態素解析エンジン
形態素解析を行うソフトウェア
• Kuromoji
• Sudachi
Elasticsearch の Analyzer
48
検索・登録時の流れ
Char filter
Tokenizer
Token filter
Token
Elasticsearch の Analyzer
49
検索・登録時の流れ
Char filter
Tokenizer
Token filter
Token
大文字小文字正規化・タグ除去など
形態素解析により分割
正規化やストップワード除去
Elasticsearch の Analyzer
50
検索・登録時の流れ
Char filter
Tokenizer
Token filter
Token
Analyzer
大文字小文字正規化・タグ除去など
形態素解析により分割
正規化やストップワード除去
Elasticsearch の Analyzer
51
デフォルトでは 日本語の処理が非力
プラグインを追加して対応!
⚫ Kuromoji
⚫ Sudachi
⚫ ICU Analysis plugin
アジェンダ
52
基礎編
入門編
実践編
Elasticsearch のしくみ
実際に動かしてみる
実業務への適用例の紹介
⚫ 実際に動くものをつくってみる
⚫ パフォーマンスチューニング
⚫ ガベージコレクション
53
入門編
実際に使ってみる
54
日本語全文検索エンジン
を作る‼
データを用意する
55
日本語版 Wikipedia のダンプを使う
ノートページ、利用者ページを除く最新版の各ページ
約 11 GB 230万件
⚫ 記事 ID
⚫ タイトル
⚫ 本文
の 3 つを利用
更新は不要(検索のみ)
Elasticsearch 構築
56
⚫ ConoHa 8GB
⚫ CentOS 7.6 64bit
⚫ Oracle JDK 1.8.0 201
⚫ Elasticsearch 6.6.0
非クラスタ構成(1ノード)
Java 8 系の最新版が推奨
公式の Docker Image は Java 11……
Support Matrix を見ると対応している模様
インストール
57
yum install –y elasticsearch
導入はとても簡単(公式ドキュメント参照)
インストール
58
Elasticsearch が使えるメモリの設定
/etc/elasticsearch/jvm.options
-Xms4g –Xmx4g
物理メモリの半分が上限
今回は 8GB インスタンス
形態素解析エンジン
59
Sudachi
株式会社ワークスアプリケーションズが開発
他の形態素解析エンジンと比べて……
⚫ 継続的なメンテナンス 6.7.1まで対応済み
⚫ 最新の辞書(新語対応 例: PayPay TikTok)
⚫ 複数の分割単位の併用
https://qiita.com/sorami/items/99604ef105f13d2d472b
カンヌ / 国際 / 映画 / 祭
カンヌ / 国際 / 映画祭
カンヌ国際映画祭
インストール
60
Sudachi プラグインは GitHub の ZIP を使う
古いバージョン向けの SNAPSHOT はバグフィックスが適用されていないことがある
インストール
61
プラグインをインストール
elasticsearch-plugin install file://path-to-sudachi-zip
辞書の配置などはドキュメントを参照
Index 設計
62
Analyzer
Char filter ⚫ icu_normalizer:大文字小文字など
Tokenizer ⚫ sudachi-tokenizer (search mode)
Token filter ⚫ sudachi_part_of_speech:品詞除外
⚫ sudachi_ja_stop:ストップワード除外
Index 設計
63
Mapping
Title:text
Body:text
の 2 つのみ。記事 ID は Document の ID に設定する。
Shard / Replica 数
1 ノード構成なので Shard 1 / Replica 0
フロントエンド
64
今回はお手軽な構成にしました
Elasticsearch
API
デモ
65
デモ
66
動いた!
パフォーマンスを測ってみる
67
10 QPS で 1,000 件の検索クエリを飛ばす
Tester Elasticsearch
平均レスポンスタイムを計測
パフォーマンスを測ってみる
68
10 QPS で 1,000 件の検索クエリを飛ばす
Tester Elasticsearch
平均レスポンスタイムを計測
平均:129 ms
⚫ 実際に動くものをつくってみる
⚫ パフォーマンスチューニング
⚫ ガベージコレクション
69
入門編
パフォーマンス向上
70
RDB 全文検索エンジン
重要視 トランザクション スケーラビリティ
インタフェース SQL(汎用性) 検索特化クエリ
検索結果 全件取得 スコアリング
パフォーマンス向上
71
Solr Elasticsearch
基盤 Apache Lucene Apache Lucene
クラスタ Apache ZooKeeper 起動するだけ
クエリ Key=Value DSL
実績と信頼がある 企業により開発
採用例増えてる
パフォーマンス向上
72
スケールアウトする前に
単体で高速化しよう
チューニングできそうなもの
73
⚫ マッピング・検索クエリ
⚫ 更新時フラッシュ
⚫ レプリカ数・シャード数
チューニングできそうなもの
74
⚫ マッピング・検索クエリ → もともと単純
⚫ 更新時フラッシュ → 更新なし
⚫ レプリカ数・シャード数 → シングルノード
チューニングできそうなもの
75
⚫ マッピング・検索クエリ → もともと単純
⚫ 更新時フラッシュ → 更新なし
⚫ レプリカ数・シャード数 → シングルノード
何ができるの?
メモリチューニング
76
メモリチューニング
77
Shard ファイル
/var/lib/elasticsearch/
高頻度で Shard ファイルにアクセス
Elasticsearch
メモリチューニング
78
ファイルシステムキャッシュが重要
Elasticsearch が使用 空きメモリ
8GB4GB
空き領域は OS がキャッシュに利用
Elasticsearch が使用 OSのキャッシュ
8GB4GB
メモリチューニング
79
ファイルシステムキャッシュが重要
Elasticsearch が使用 OSのキャッシュ
8GB4GB
Shard ファイル
/var/lib/elasticsearch/
メモリチューニング
80
ファイルシステムキャッシュ
Elasticsearch OSのキャッシュ
8GB2GB
Shard ファイル
/var/lib/elasticsearch/
メモリチューニング
81
ファイルシステムキャッシュを増やす
Elasticsearch にかかる負荷を考慮しつつ
メモリの割り当てを減らす
-Xms4g -Xmx4g -Xms1g -Xmx1g
メモリチューニング
82
メモリの割り当てが小さい
ガベージコレクションの頻発
が問題に
Elasticsearch のメモリ使用量
83
Young 領域 Old 領域
Eden 空間 S0 S1
観察してみる
Elasticsearch のメモリ使用量
84
Young 領域 Old 領域
Eden 空間 S0 S1
Eden がいっぱいになってGC動作
Elasticsearch のメモリ使用量
85
Young 領域 Old 領域
Eden 空間 S0 S1
ほとんど解放される
Elasticsearch のメモリ使用量
86
Young 領域 Old 領域
Eden 空間 S0 S1
無駄!!!
Elasticsearch のメモリ使用量
87
チューニングの余地がありそう
ガベージコレクション
⚫ 実際に動くものをつくってみる
⚫ パフォーマンスチューニング
⚫ ガベージコレクション
88
入門編
ガベージコレクション
89
/etc/elasticsearch/jvm.options
-XX:+UseConcMarkSweepGC
CMS-GC を使う
オプションで
アルゴリズムを指定可能
CMS-GC
90
Concurrent Mark-Sweep
Garbage Collection
⚫ Young 領域の解放
アプリケーションスレッドは停止
⚫ Old 領域の解放
アプリケーションスレッドと並列動作
ヒープ:Javaが使うメモリ の構造
91
Young 領域
Old 領域
Eden
Survivor 0 Survivor 1
寿命の短いオブジェクト
寿命の長いオブジェクト
新規に作られた
作られてから時間が経った
CMS-GC
92
Young 領域 Old 領域
Eden 空間 S0 S1
新規オブジェクトは Eden に入る
CMS-GC
93
Young 領域 Old 領域
Eden 空間 S0 S1
いっぱいになりました
CMS-G
94
Young 領域 Old 領域
Eden 空間 S0 S1
Young GC
Survivor / Old に移動
不要なオブジェクトは消滅
CMS-GC
95
Young 領域 Old 領域
Eden 空間 S0 S1
アプリケーションスレッド停止
Stop The World
CMS-GC
96
Young 領域 Old 領域
Eden 空間 S0 S1
いっぱいになってきました
CMS-GC
97
Young 領域 Old 領域
Eden 空間 S0 S1
Concurrent Cycle
Old 領域内の不要オブジェクトを解放
アプリケーションと並列に動作
GCの動作をチューニングしたい
98
Young GC > CMS GC
STW があるので
頻度を減らしたい
動作の回数
Elasticsearch のメモリ使用量
99
Young 領域 Old 領域
Eden 空間 S0 S1
こうすれば頻度減
デモ
100
-Xms1g –Xmx1g # メモリ割り当てを減らした
-XX:NewSize=600M # Young を多くする
-XX:SurvivorRatio=20 # Eden を多くする
※やや極端な設定
メモリ割り当てを減らして Eden 多め
jvm.options を以下のように設定
デモ
101
※ 今回は極端なチューニングのため、Young GC動作後すぐにCMS-GCが動作している
デモまとめ
102
Default Tuned
Java オプション
-Xms4g
–Xmx4g
-Xms1g –Xmx1g
-XX:NewSize=600M
-XX:SurvivorRatio=20
※やや極端な設定
GC Young GC が頻発
Young GC の頻発を抑止
(メモリ4G時と同等)
CMS GC の動作が増加
レスポンスタイム短縮
メモリチューニング TIPS
103
⚫ ヒープ割り当ては多ければ良いわけではない
⚫ Concurrent Cycle はスループットが低下する
Eden 多めのチューニングが逆効果の場合も……
G1GCという手も……
⚫ Java 9 からデフォルトの新しい GC
⚫ 最新版のElasticsearch も対応
⚫ 要検証
アジェンダ
104
基礎編
入門編
実践編
Elasticsearch のしくみ
実際に動かしてみる
実業務への適用例の紹介
⚫ Elasticsearch 導入前の課題
⚫ 課題解決のための Index 設計
⚫ クラスタ構成とノードの役割
⚫ クラスタ設計
⚫ Index と Alias
⚫ Snapshot
105
実践編
GMO ポイントモールの課題
106
連携商材を利用したネットショップの商品のリンク集
GMO ポイントモールの課題
107
関係のない商品がたくさんヒットする……
GMO ポイントモールの課題
108
説明文にUSBの文字が‼
GMO ポイントモールの課題
109
説明文にUSBの文字が‼
商品名と説明文の重みづけが必要
⚫ Elasticsearch 導入前の課題
⚫ 課題解決のための Index 設計
⚫ クラスタ構成とノードの役割
⚫ クラスタ設計
⚫ Index と Alias
⚫ Snapshot
110
実践編
格納すべきデータ
111
⚫ 商品名
⚫ 商品概要
⚫ 商品説明
⚫ 商品説明(モバイル版)
⚫ 価格
⚫ カテゴリ
⚫ 各種フラグ類(クレジットカード対応など)
検索の要件
112
⚫ 商品名
⚫ 商品概要
⚫ 商品説明
⚫ 商品説明(モバイル版)
⚫ 価格
⚫ カテゴリ
⚫ 各種フラグ類(クレジットカード対応など)
全文検索の対象
ソート・しぼり込み
検索の要件
113
検索時の重みづけ
商品名 ≫ その他 で重みづけ
商品名
USBケーブル
説明文
プリンタ対応
商品名
プリンタ
説明文
USB対応
≫
「USB」で検索をした場合
Index の設計
114
全文検索の対象フィールド
copy_to を用いて検索用フィールドにコピー
商品名 ⚫ search_name
Sudachi search モードを使用
⚫ search_name_kana
Token filter に sudachi_readingform
⚫ search_name_2g
2-Gram Analyzer を使用
Index の設計
115
全文検索の対象フィールド
copy_to を用いて検索用フィールドにコピー
半生
讃岐うどん
⚫ search_name
半生 / 讃岐 / うどん
⚫ search_name_kana
はんなま / さぬき / うどん
⚫ search_name_2g
半生 / 生讃 / 讃岐 / 岐う / うど / どん
Index の設計
116
全文検索の対象フィールド
copy_to を用いて検索用フィールドにコピー
⚫ search_body
Sudachi search モード
説明
説明(モバイル)
概要
“search_body”: [“ABC”, “def”, “あいうえお”]
各要素に対して自動で検索
Index の設計
117
全文検索の対象フィールド
copy_to を用いて検索用フィールドにコピー
⚫ search_body
Sudachi search モード
コシのある~
本場の味!~
半生麺です
“search_body”: [“半生 / 麺”, “コシ/~”, “本場/~”]
Index の設計
118
"search_name": {
…
"boost": 100
},
…
"search_name_kana": {
…
"boost": 40
},
"search_name_body": {
…
"boost": 20
},
…
クエリの「boost」
検索結果のスコアに重みづけ
Index の設計
119
ひとまず
検索の要件は達成
⚫ Elasticsearch 導入前の課題
⚫ 課題解決のための Index 設計
⚫ クラスタ構成とノードの役割
⚫ クラスタ設計
⚫ Index と Alias
⚫ Snapshot
120
実践編
Elasticsearch のクラスタ構成
121
今回は使えるリソースが大体決まっていた
16GB / 2 vCPU
5 台くらいでやりたい
クラスタ構成を考える
例:
Elasticsearch のクラスタ構成
122
起動するだけクラスタできるけど……
仕組みを知らずに
本番利用は無理
Elasticsearch のクラスタ構成
123
Index
Document 1
Document 2
Document 3
1
2
3
4
1
2
3
4
1
2
3
4
Shard は分割したり Replica を作れる
Elasticsearch のクラスタ構成
124
ノード ノード ノード
Index
Index
複数ノードに分割して配置
Elasticsearch のクラスタ構成
125
ノード ノード ノード
Index
Index
どれがホンモノ……?
Elasticsearch のクラスタ構成
126
Index
Document 1
Document 2
Document 3
1
2
3
4
1
2
3
4
1
2
3
4
Replica の親玉となる Shard
Primary Shard
Elasticsearch のクラスタ構成
127
ノード ノード ノード
Index
Primary
Shard
Replica
Shard
Replica
Shard
Index
各ノードで分散して保持
Elasticsearch のクラスタ構成
128
ノード ノード マスタ
Index
Primary
Shard
Replica
Shard
Replica
Shard
Index
マスタ クラスタを統括するノード
Elasticsearch のクラスタ構成
129
ノード ノード マスタ
Index
Primary
Shard
Replica
Shard
Replica
Shard
Index
障害発生‼
Elasticsearch のクラスタ構成
130
マスタ ノード
Primary
Shard
残りのノードでクラスタを維持
Replica
Shard
Elasticsearch のクラスタ構成
131
マスタ適格ノード
データノード
※ 他にもあります
マスタノードになることができるノード
データを保持するノード
コーディネータノード
外部からのリクエストを受け付けるノード
(基本全ノードが担当)
Elasticsearch のクラスタ構成
132
マスタが不在になると停止
マスタ適格ノードを複数配置する必要がある
ノード データ コーディネータ
ノード データ コーディネータ
ノード マスタ データ コーディネータ
Elasticsearch のクラスタ構成
133
マスタ適格ノードが
1 台でも生きていればOK?
Elasticsearch のクラスタ構成
134
[(クラスタ内のマスタ適格ノード数 / 2) + 1] 以上
動作しているマスタ適格ノードの最低数
discovery.zen.minimum_master_nodes: 2
例:3台構成のとき [3/2 + 1] = 2
これを下回るとクラスタ停止
Elasticsearch のクラスタ構成
135
ノード マスタ データ コーディネータ
ノード マスタ データ コーディネータ
ノード マスタ データ コーディネータ
discovery.zen.minimum_master_nodes: 1
無視してみる
Elasticsearch のクラスタ構成
136
ノード マスタ データ コーディネータ
クラスタが分かれてしまう
ネットワーク障害など
ノード データ コーディネータマスタ
スプリットブレイン
ノード データ コーディネータマスタ
Elasticsearch のクラスタ構成
137
ノード
M D
ノード
M D
ノード
M D
ノード
M D
ノード
M D
クラスタ構成例
discovery.zen.minimum_master_nodes: 3
Elasticsearch のクラスタ構成
138
ノード
M D
ノード
M D
ノード
M D
ノード
M D
ノード
M D
クラスタ構成例
discovery.zen.minimum_master_nodes: 3
Elasticsearch のクラスタ構成
139
ノード
M D
ノード
M D
ノード
M D
ノード
M D
ノード
M D
クラスタ構成例
discovery.zen.minimum_master_nodes: 3
Elasticsearch のクラスタ構成
140
ノード
M D
ノード
M D
ノード
M D
ノード
M D
ノード
M D
クラスタ構成例
discovery.zen.minimum_master_nodes: 3
⚫ Elasticsearch 導入前の課題
⚫ 課題解決のための Index 設計
⚫ クラスタ構成とノードの役割
⚫ クラスタ設計
⚫ Index と Alias
⚫ Snapshot
141
実践編
Elasticsearch のクラスタ構成
142
ノード
M D
ノード
M D
ノード
M D
ノード
M D
ノード
M D
クラスタ
discovery.zen.minimum_master_nodes: 3
全ノード マスタ候補 + データ
クラスタの設計
143
20 GB 程度
商品データ
各ノード 4GB ずつキャッシュに載せたい‼
クラスタの設計
144
20 GB 程度
商品データ
各ノード 4GB ずつキャッシュに載せたい‼
RAM:16 GB
-Xms8g -Xmx8g -XX:NewSize=7g -XX:SurvivorRatio=20
Java オプション
クラスタの設計
145
Replica を増やす
レプリカ数とシャード数
並列に読み込み → 検索速度 UP?
Shard を増やす
並列に書き込み → 登録更新速度 UP?
複数パターンでパフォーマンス計測
試行錯誤で決定
クラスタの設計
146
Replica を増やす
レプリカ数とシャード数
並列に読み込み → 検索速度 UP?
Shard を増やす
並列に書き込み → 登録更新速度 UP?
試行錯誤で決定
1 Shard / 2 Replica
クラスタの設計
147
クラスタ組めた!
⚫ Elasticsearch 導入前の課題
⚫ 課題解決のための Index 設計
⚫ クラスタ構成とノードの役割
⚫ クラスタ設計
⚫ Index と Alias
⚫ Snapshot
148
実践編
Index と Alias
149
バージョン名を Index に付与
無停止で Alias の参照先変更もできる
item_v1
shop_v1
Alias
shop
item
item や shop の名前でアクセス可能‼
Index と Alias
150
カテゴリで Index を分割
全 21 カテゴリ
に分かれている
Index と Alias
151
カテゴリで Index を分割
全 21 カテゴリ
item_v1_1 item_food
item_v1_2 item_fashion
item_v1_21 item_other
…
…
item_v1_1,…,
… , item_v1_21 item
Index と Alias
152
20 GB 程度
商品データ
Shard 分割に近い状況
food fashion car audio other
Index と Alias
153
food fashion car audio other
カテゴリの絞り込みに有利
食べ物:カニ
154
本当にあった
怖い話
データ投入時のできごと
155
検証用 Elasticsearch
20 GB 程度
商品データ
投入完了
データ投入時のできごと
156
検証用 Elasticsearch
20 GB 程度
商品データ
投入完了
本番をつくるぞ!!!
データ投入時のできごと
157
Index 管理 REST API
PUT /index名 # index 作成
GET /index名 # index 情報取得
DELETE /index名 # index 削除
データ投入時のできごと
158
$ curl “本番環境/item_v1_1” –X PUT –d @index.json
やりたかったこと
データ投入時のできごと
159
$ curl “本番環境/item_v1_1” –X PUT –d @index.json
$ curl “検証環境/item_v1_1” –X DELETE –d @index.json
やりたかったこと
実際にやったこと
データ投入時のできごと
160
$ curl “本番環境/item_v1_1” –X PUT –d @index.json
$ curl “検証環境/item_v1_1” –X DELETE –d @index.json
やりたかったこと
実際にやったこと
item_v1_1 消滅
データ投入時のできごと
161
$ for i in $(seq 1 21); do
> curl “検証環境/item_v1_$i” –X DELETE –d @index.json
> done
全 Index 消滅
バックアップは必ず取る
162
バックアップは
必ず取る
バックアップは必ず取る
163
Snapshot API
⚫ NFS や S3 に Snapshot を取れる
⚫ 差分で管理 & 古いものを消してもうまくやる
⚫ レストアの自由度が高い
バックアップは必ず取る
164
バックアップは
必ず取る
※ 稼働前のできごとです
165
無事にリリースされました
https://point.gmo.jp/shopping/top
まとめ
166
⚫ Elasticsearch はクラスタ構築に強い
⚫ 細かいチューニングで大幅に高速化
⚫ 複数フィールドを使って重みづけが可能
⚫ バックアップは必ず取る
実運用に耐えられるシステムができた
ご清聴ありがとうございました
167
⚫ Elasticsearch はクラスタ構築に強い
⚫ 細かいチューニングで大幅に高速化
⚫ 複数フィールドを使って重みづけが可能
⚫ バックアップは必ず取る
実運用に耐えられるシステムができた

More Related Content

What's hot

Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Tetsuya Sodo
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPTnlab_utokyo
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019Tokoroten Nakayama
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesignRyoma Nagata
 
グラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみたグラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみたCData Software Japan
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門KnowledgeGraph
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいこと
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいことMLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいこと
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいことRakuten Group, Inc.
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)株式会社MonotaRO Tech Team
 

What's hot (20)

Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesign
 
グラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみたグラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみた
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいこと
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいことMLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいこと
MLOps Yearning ~ 実運用システムを構築する前にデータサイエンティストが考えておきたいこと
 
BERT入門
BERT入門BERT入門
BERT入門
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
 
MLOpsはバズワード
MLOpsはバズワードMLOpsはバズワード
MLOpsはバズワード
 

Similar to 実践!Elasticsearch + Sudachi を用いた全文検索エンジン

self made Fulltext search first_step
self made Fulltext search first_stepself made Fulltext search first_step
self made Fulltext search first_stepRyou Katou
 
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
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムShinsuke Sugaya
 
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり Rakuten Group, Inc.
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会Takahiro Iwase
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニングMunenori Sugimura
 
Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Shotaro Suzuki
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudyTakahiro Iwase
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Takuya Ueda
 
あらゆる検索を叶えるElastic Workplace Search
あらゆる検索を叶えるElastic Workplace Searchあらゆる検索を叶えるElastic Workplace Search
あらゆる検索を叶えるElastic Workplace SearchElasticsearch
 
20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_search20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_searchKazuhiro Wada
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
ニコニコニュースと全文検索
ニコニコニュースと全文検索ニコニコニュースと全文検索
ニコニコニュースと全文検索techtalkdwango
 
日本語全文検索システム Kabayaki
日本語全文検索システム Kabayaki日本語全文検索システム Kabayaki
日本語全文検索システム KabayakiArai Ran
 
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向Naoki (Neo) SATO
 
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向de:code 2017
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバShinsuke Sugaya
 

Similar to 実践!Elasticsearch + Sudachi を用いた全文検索エンジン (20)

全文検索入門
全文検索入門全文検索入門
全文検索入門
 
self made Fulltext search first_step
self made Fulltext search first_stepself made Fulltext search first_step
self made Fulltext search first_step
 
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
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
あらゆる検索を叶えるElastic Workplace Search
あらゆる検索を叶えるElastic Workplace Searchあらゆる検索を叶えるElastic Workplace Search
あらゆる検索を叶えるElastic Workplace Search
 
20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_search20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_search
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
ニコニコニュースと全文検索
ニコニコニュースと全文検索ニコニコニュースと全文検索
ニコニコニュースと全文検索
 
日本語全文検索システム Kabayaki
日本語全文検索システム Kabayaki日本語全文検索システム Kabayaki
日本語全文検索システム Kabayaki
 
Haikara
HaikaraHaikara
Haikara
 
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
 
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
[DI06] 並列分散処理の考え方とオープンソース分散処理系の動向
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 

Recently uploaded

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Recently uploaded (9)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

実践!Elasticsearch + Sudachi を用いた全文検索エンジン