Rustで簡単ElasticsearchClient

皆さんこんばんは。私にとって一日の境界は午前9時なので、まだ19日目のはずです。
はい。すみません。遅くなりましたが、これはRust Adventcalendarの19日目です。

Rustは完全に趣味でやっている初心者なのですが、せっかく触っているなら
仕事でも使いたくなりますよね。
私はElasticsearchを仕事でよく触るので、今回はRustのElasticsearchClientを
紹介していきます。

今回使うライブラリは
elastic-rs
です。

まずはクライアントオブジェクトを作ります。この辺は大体同じですね。

   let client = SyncClientBuilder::new().build()?;

検索をしたいときには、elasticsearchのqueryをそのまま使えます。

   let res = client
      .search::<Value>()
      .index("_all")
      .body(json!({
          "query": {
              "query_string": {
                  "query": "*"
              }
          }
      }))
      .send()?;

また、documentを登録したいときは、structを定義してMapping・投入ができます。

  struct docType {
      id: i32,
      title: String,
      timestamp: Date<DefaultDateMapping>,
  };
  let document = docType {
      id: 1,
      title: String::from("adventcalendar"),
      timestamp: Date::now(),
  };
  client.document_put_mapping::<docType>(Index::from("sample")).send()?;
  client.document_index(sample_index(), id(doc.id), doc).send()?;

こんな感じで使えます。
まだver0.20.8なのですが、やりたいことは大体できます。すごい便利です。
これを使えばちょっとしたElasticsearchClient作れますね。

それでは、今回はこの辺で。