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