ElasticsearchクライアントライブラリとSpecification

A presentation at 第51回Elasticsearch勉強会 2022.12.14 #elasticsearchjp in December 2022 in by Jun Ohtani

Slide 1

Slide 1

Elasticsearchクライアント ライブラリとSpecification 2022/12/14 Jun Ohtani / @johtani

Slide 2

Slide 2

自己紹介 フリーランスエンジニア 検索技術勉強会主催者 検索システムの著者の一人 (ラムダノートより出版)

Slide 3

Slide 3

絶賛発売中 検索についてはこちらの本が いいらしいですよ(ステマ) 19日までラムダノートが8周年 セールやってるらしいですよ

Slide 4

Slide 4

各言語のライブラリ

Slide 5

Slide 5

Javaの新しいクライアントライブラリ 7.16で正式リリース Elasticsearch本体から分離 依存がすくなくなった 参考:Elasticsearchの新しいJavaクライアント https://blog.johtani.info/blog/2022/06/13/new-elasticsearchjava-client/

Slide 6

Slide 6

それだけ?

Slide 7

Slide 7

実は足回りがガラッと変更されました elasticsearch-specification ElasticsearchのAPIの仕様をまとめるためのリポジトリ 参考ビデオ:ElasticCC: The new Elasticsearch Java Client: getting started and behind the scenes

Slide 8

Slide 8

elasticsearchのAPI?

Slide 9

Slide 9

ElasticsearchのAPIを調べるには? 公式リファレンス(なんか、最近トップがわかりにくい?) elasticsearch/rest-api-spec elasticsearch/rest-api-spec/yamlRestTest リポジトリのソースコード おまけ:Kibanaのオートコンプリート?

Slide 10

Slide 10

公式 リファレンス パラメータ多い プログラムでは読めない レスポンス形式がわからん

Slide 11

Slide 11

rest-api-spec プログラムで読めそう YAMLで定義(型はわからな い) レスポンス形式がわからん

Slide 12

Slide 12

rest-api-spec プログラムで読めそう YAMLで定義(型はわからな い) レスポンス形式がわからん bodyのJSONは。。。記載 なし

Slide 13

Slide 13

rest-apispec/yamlRestTest プログラムで読めそう レスポンス形式がわか 。。。るかも? 全パターン網羅されてる?

Slide 14

Slide 14

elasticsearch-specification https://github.com/elastic/elasticsearch-specification APIのURLがspecificationのディレクトリを表現 リクエストとレスポンスをTypeScriptで定義

Slide 15

Slide 15

リクエストサンプル

Slide 16

Slide 16

レスポンスサンプル

Slide 17

Slide 17

型情報サンプル

Slide 18

Slide 18

compiler? 公式リポジトリのBirdsEyeより一部抜粋

Slide 19

Slide 19

JSON model 生成されたJSONもリポジトリにある 4.36MB!! https://github.com/elastic/elasticsearchspecification/blob/main/output/schema/schema.json

Slide 20

Slide 20

Slide 21

Slide 21

Slide 22

Slide 22

Slide 23

Slide 23

generator? 公式リポジトリのBirdsEyeより一部抜粋

Slide 24

Slide 24

generator? TypeScript用のGeneratorはSpecificationリポジトリにある JavaクライアントのREST APIの一部はSpecificationから自動生 成されている ただし生成用のGeneratorがどんなものかは不明

Slide 25

Slide 25

じゃあ、他の言語の ライブラリは?

Slide 26

Slide 26

各言語のライブラリ

Slide 27

Slide 27

どの言語が対応してるの?(憶測) Python TypeScript? Go?

Slide 28

Slide 28

まとめ elasticsearch-specificationというリポジトリがあるよ クライアントライブラリの中にはここから自動生成されてる ものもあるよ Specificationが進化すると便利そう バグ踏んだらIssue登録してみましょう 他の言語への展開はいつだろう? どうやったらわかるんだろう??

Slide 29

Slide 29

Thanks! @johtani 19日までラムダノートが8周年 セールやってるらしいですよ

Slide 30

Slide 30

参考文献 Elasticsearchの新しいJavaクライアント elasticsearch-pecification ElasticCC: The new Elasticsearch Java Client: getting started and behind the scenes