A presentation at 第51回Elasticsearch勉強会 2022.12.14 #elasticsearchjp in December 2022 in by Jun Ohtani
Elasticsearchクライアント ライブラリとSpecification 2022/12/14 Jun Ohtani / @johtani
自己紹介 フリーランスエンジニア 検索技術勉強会主催者 検索システムの著者の一人 (ラムダノートより出版)
絶賛発売中 検索についてはこちらの本が いいらしいですよ(ステマ) 19日までラムダノートが8周年 セールやってるらしいですよ
各言語のライブラリ
Javaの新しいクライアントライブラリ 7.16で正式リリース Elasticsearch本体から分離 依存がすくなくなった 参考:Elasticsearchの新しいJavaクライアント https://blog.johtani.info/blog/2022/06/13/new-elasticsearchjava-client/
それだけ?
実は足回りがガラッと変更されました elasticsearch-specification ElasticsearchのAPIの仕様をまとめるためのリポジトリ 参考ビデオ:ElasticCC: The new Elasticsearch Java Client: getting started and behind the scenes
elasticsearchのAPI?
ElasticsearchのAPIを調べるには? 公式リファレンス(なんか、最近トップがわかりにくい?) elasticsearch/rest-api-spec elasticsearch/rest-api-spec/yamlRestTest リポジトリのソースコード おまけ:Kibanaのオートコンプリート?
公式 リファレンス パラメータ多い プログラムでは読めない レスポンス形式がわからん
rest-api-spec プログラムで読めそう YAMLで定義(型はわからな い) レスポンス形式がわからん
rest-api-spec プログラムで読めそう YAMLで定義(型はわからな い) レスポンス形式がわからん bodyのJSONは。。。記載 なし
rest-apispec/yamlRestTest プログラムで読めそう レスポンス形式がわか 。。。るかも? 全パターン網羅されてる?
elasticsearch-specification https://github.com/elastic/elasticsearch-specification APIのURLがspecificationのディレクトリを表現 リクエストとレスポンスをTypeScriptで定義
リクエストサンプル
レスポンスサンプル
型情報サンプル
compiler? 公式リポジトリのBirdsEyeより一部抜粋
JSON model 生成されたJSONもリポジトリにある 4.36MB!! https://github.com/elastic/elasticsearchspecification/blob/main/output/schema/schema.json
generator? 公式リポジトリのBirdsEyeより一部抜粋
generator? TypeScript用のGeneratorはSpecificationリポジトリにある JavaクライアントのREST APIの一部はSpecificationから自動生 成されている ただし生成用のGeneratorがどんなものかは不明
じゃあ、他の言語の ライブラリは?
どの言語が対応してるの?(憶測) Python TypeScript? Go?
まとめ elasticsearch-specificationというリポジトリがあるよ クライアントライブラリの中にはここから自動生成されてる ものもあるよ Specificationが進化すると便利そう バグ踏んだらIssue登録してみましょう 他の言語への展開はいつだろう? どうやったらわかるんだろう??
Thanks! @johtani 19日までラムダノートが8周年 セールやってるらしいですよ
参考文献 Elasticsearchの新しいJavaクライアント elasticsearch-pecification ElasticCC: The new Elasticsearch Java Client: getting started and behind the scenes