【Elastic】APIでインデックス操作 -インデックス作成

elastidsearchは豊富なAPIを提供しており、インデックスに対する様々な操作を実行することができます。

今回は、APIを介してインデックスを作成する方法を紹介します。

実行環境

今回APIはKibanaの「開発ツール」から実行します。

インデックス作成

まずは基本構文です。

PUT /インデックス名

たとえばtest_indexというインデックスを作成する場合は以下のように書きます。

PUT /test_index

作成したインデックスはデフォルトの設定のみ保持し、マッピングやエイリアスの情報は一切保持していません。

設定やマッピング、エイリアスの情報は、リクエストボディに加えることで付与できます。

設定の追加

設定にパラメータを追加したい場合は、”settings”をリクエストに加えます。

PUT /test_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}

設定に加えることができるパラメータは複数まとめて記載することができます。

マッピングの追加

マッピングを追加したい場合は”mappings”をリクエストに加えます。

PUT /test_index
{
  "mappings": {
    "properties": {
      "field1": { "type": "text" }
    }
  }
}

マッピングを確認してみます。

GET /test_index/_mapping

>>
{
  "test_index" : {
    "mappings" : {
      "properties" : {
        "field1" : {
          "type" : "text"
        }
      }
    }
  }
}

マッピングはドキュメントを登録した際に自動で作成されますが、予めフィールドの型を決めておきたい場合には予めマッピングを定義しておきます。

エイリアスの追加

エイリアスを追加する場合は”aliases”を加えます。

PUT /test_index
{
  "aliases": {
    "alias_1": {},
    "alias_2": {
      "routing": "shard-1"
    }
  }
}

エイリアスが加わっています。

組み合わせも可能

設定やマッピング、エイリアスを同時に指定することも当然可能です。

PUT /test_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "field1": { "type": "text" }
    }
  },
  "aliases": {
    "alias_1": {},
    "alias_2": {
      "routing": "shard-1"
    }
  }
}

まとめ

elasticsearchのAPIを使ってインデックスを作成する方法を紹介しました。

データをためておくだけの場合あまり使うことはないかもしれませんが、インデックスを検索や分析の用途に合わせてカスタマイズしたい場合にはこの方法を用いる機会もあると思います。

参考になれば嬉しいです^^

ではでは👋