19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

最近、Elasticsearchを使っています。コマンドは基本的にcurlを使っています。しかし、ドキュメントがElasticsearchのバージョンによって違うため探しづらく、curlとJSONを使うので覚えるのも大変だと思ってました。なので、自分でまとめてみました。

index

作成

・ドキュメント

・例

curl -XPUT localhost:9200/hoge

確認

●CAT

・ドキュメント

・例

curl localhost:9200/_cat/indices/hoge

●settings

・ドキュメント

・例

curl localhost:9200/hoge/_settings

更新

●settings

・ドキュメント

・例

curl -XPUT localhost:9200/hoge/_settings -H 'Content-Type: application/json' -d '{
  "index": {
    "number_of_replicas" : 0
  }
}'

●インデックスの名前の変更(reindex)

別名のインデックスが新しく作成されます。

・ドキュメント

・例

curl -XPOST localhost:9200/_reindex -H 'Content-Type: application/json' -d '{
  "source": {
    "index": "hoge"
  },
  "dest": {
    "index": "new_hoge"
  }
}'

削除

・ドキュメント

・例

curl -XDELETE localhost:9200/hoge

alias

作成&更新

●Create or update

・ドキュメント

・例

curl -XPUT localhost:9200/hoge/_alias/hoge-alias

●actions

・ドキュメント

・例

curl -XPOST localhost:9200/_aliases -H 'Content-Type: application/json' -d '{
  "actions": [{
    "add": {
      "index": "hoge",
      "alias": "hoge-alias",
      "is_write_index": true
    }
  }]
}'

確認

●CAT

・ドキュメント

・例

curl localhost:9200/_cat/aliases/hoge-alias

●GET

・ドキュメント

・例

curl localhost:9200/_aliases

削除

・ドキュメント

・例

curl -XDELETE localhost:9200/hoge/_alias/hoge-alias

ilm policy

有効化/無効化/ステータス

・ドキュメント

・例

curl -XPOST localhost:9200/_ilm/start #有効化
curl -XPOST localhost:9200/_ilm/stop #無効化
curl localhost:9200/_ilm/status #ステータス

作成&更新

・ドキュメント

curl -XPUT localhost:9200/_ilm/policy/hoge-policy -H 'Content-Type: application/json' -d '{
  "policy": {
    "phases": {
      "delete" : {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}'

確認

・ドキュメント

・例

curl localhost:9200/_ilm/policy/hoge-policy

削除

・ドキュメント

・例

curl -XDELETE localhost:9200/_ilm/policy/hoge-policy

template

作成&更新

・ドキュメント

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-template.html
legacyバージョン(Elasticsearch7.8より前)
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates-v1.html

・例

curl -XPUT localhost:9200/_index_template/hoge-template -H 'Content-Type: application/json' -d '{
  "index_patterns": ["hoge"],
  "template":{
    "settings": {
      "index.lifecycle.name": "hoge-policy"
    }
  }
}'

legacyバージョン(Elasticsearch7.8より前)

curl -XPUT localhost:9200/_template/hoge-template -H 'Content-Type: application/json' -d '{
  "index_patterns": ["hoge"],
  "settings": {
    "index.lifecycle.name": "hoge-policy"
  }
}'

確認

・ドキュメント

https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-templates.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-template.html
legacyバージョン(Elasticsearch7.8より前)
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-template-v1.html

・例

CAT

curl localhost:9200/_cat/templates/hoge-template

GET

curl localhost:9200/_index_template/hoge-template

legacyバージョン(Elasticsearch7.8より前)

curl localhost:9200/_template/hoge-template

削除

・ドキュメント

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-template.html
legacyバージョン(Elasticsearch7.8より前)
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-template-v1.html

・例

curl -XDELETE localhost:9200/_index_template/hoge-template

legacyバージョン(Elasticsearch7.8より前)

curl -XDELETE localhost:9200/_template/hoge-template

snapshot

作成&更新

●リポジトリ登録

・ドキュメント

・例

curl -XPUT localhost:9200/_snapshot/hoge-repo -H 'Content-Type: application/json' -d '{
  "type": "fs",
  "settings": {
    "location": "/es-backup"
  }
}'

●スナップショット取得

・ドキュメント

・例

curl -XPUT localhost:9200/_snapshot/hoge-repo/snapshot_$(date "+%Y%m%d")?wait_for_completion=true -H 'Content-Type: application/json' -d '{
  "indices": "hoge"
}'

●レストア

・ドキュメント

・例

curl -XPOST localhost:9200/_snapshot/hoge-repo/snapshot_20221126/_restore?wait_for_completion=true -H 'Content-Type: application/json'

確認

●リポジトリ

・ドキュメント

https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-repositories.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/get-snapshot-repo-api.html

・例

CAT

curl localhost:9200/_cat/repositories #repository
curl localhost:9200/_cat/snapshots/hoge-repo #snapshot

GET

curl localhost:9200/_snapshot/hoge-repo #repository
curl localhost:9200/_snapshot/hoge-repo/snapshot_20221126 #snapshot

削除

・ドキュメント

https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-snapshot-repo-api.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-snapshot-api.html

・例

curl -XDELETE localhost:9200/_snapshot/hoge-repo #repository
curl -XDELETE localhost:9200/_snapshot/hoge-repo/snapshot_20221126 #snapshot

health

CAT

curl localhost:9200/_cat/health

GET

curl localhost:9200/_cluster/health

※unassigned shardsの原因について

indexで問題が起きた際に以下のページの手順に従って、原因を調べることができます。

(余談)この記事のDocker環境の構築方法について

コマンドの実行結果を確認するため、Docker環境を構築しました。2022/11/26現在、Docker Composeはプラグイン化しており、インストール方法が変わっているためメモします。

サーバーはEC2(Amazon Linux2)とします。
以下のコマンドでDockerとDocker Composeプラグインをインストールします。

echo 'install docker'
DOCKER=docker-20.10.17-1.amzn2.0.1
sudo yum install -y ${DOCKER}
sudo systemctl start docker
sudo usermod -aG docker ec2-user

echo 'install docker compose plugin'
DOCKER_COMPOSE_VERSION="v2.13.0"
curl -o docker-compose -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64
chmod +x docker-compose
sudo mv docker-compose /usr/libexec/docker/cli-plugins/
docker compose version
echo 'alias dk="docker compose"' >> ~/.bash_profile

Docker Composeのため、以下のyamlファイルでコンテナを定義しました。

docker-compose.yaml
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.5.1
    ports:
    - "29201:9200"
    - "29301:9300"
    environment:
    - "discovery.type=single-node"
    - "xpack.security.enabled=false" #Elasticsearch v8からデフォルトでtrueになりました。
    - "path.repo=/es-backup"
    volumes:
    - es-backup:/es-backup

volumes:
  es-backup:
    driver_opts:
      type: none
      o: bind
      device: /es-backup

以下のコマンドでコンテナを起動します。

alias dk="docker compose" #コマンドが長いのでaliasで省略します。

dk up -d #Elasticsearchコンテナの起動
dk exec es bash #Elasticsearchコンテナにログイン

※参考
https://hub.docker.com/_/elasticsearch

おわりに

今回は自分がよく使うコマンドをまとめました。打つコマンドが長いと指が痛くなったり、思い出すことに時間を取られたりしてしまうと思います。楽に作業する工夫を今後考えていきたいと思いました。

19
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?