MeWrite Docs

index_not_found_exception

Elasticsearchで指定したインデックスが存在しない場合のエラー

概要

index_not_found_exception は、Elasticsearchで存在しないインデックスに対して検索やその他の操作を実行しようとした場合に発生するエラーです。

エラーメッセージ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "error": {
    "root_cause": [{
      "type": "index_not_found_exception",
      "reason": "no such index [my_index]",
      "resource.type": "index_or_alias",
      "resource.id": "my_index",
      "index_uuid": "_na_",
      "index": "my_index"
    }],
    "type": "index_not_found_exception",
    "reason": "no such index [my_index]"
  },
  "status": 404
}

原因

1. インデックスが作成されていない

1
2
# インデックスを作成せずに検索
GET /my_index/_search

2. インデックス名のタイプミス

1
2
# 大文字小文字の間違い
GET /MyIndex/_search  # 実際は my_index

3. インデックスが削除された

1
2
# 誰かが削除した
DELETE /my_index

4. エイリアス名の間違い

1
2
# エイリアスが設定されていない
GET /my_alias/_search

解決策

1. インデックスの存在確認

1
2
3
4
5
6
7
# インデックス一覧を取得
GET /_cat/indices?v

# 特定のインデックスが存在するか確認
HEAD /my_index
# 200: 存在する
# 404: 存在しない

2. インデックスを作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 基本的なインデックス作成
PUT /my_index

# マッピングを指定して作成
PUT /my_index
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "created_at": { "type": "date" }
    }
  }
}

3. ignore_unavailable オプション

1
2
3
4
5
# 存在しないインデックスを無視して検索
GET /my_index,other_index/_search?ignore_unavailable=true
{
  "query": { "match_all": {} }
}

4. allow_no_indices オプション

1
2
3
4
5
# ワイルドカードでマッチするインデックスがなくてもエラーにしない
GET /logs-*/_search?allow_no_indices=true
{
  "query": { "match_all": {} }
}

5. エイリアスの確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# エイリアス一覧
GET /_cat/aliases?v

# エイリアスを作成
POST /_aliases
{
  "actions": [
    { "add": { "index": "my_index_v1", "alias": "my_index" } }
  ]
}

6. インデックステンプレートを使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# テンプレートを作成
PUT /_index_template/my_template
{
  "index_patterns": ["logs-*"],
  "template": {
    "mappings": {
      "properties": {
        "message": { "type": "text" }
      }
    }
  }
}

# 自動的にインデックスが作成される
POST /logs-2024-01/_doc
{
  "message": "Hello"
}

コード例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from elasticsearch import Elasticsearch, NotFoundError

es = Elasticsearch()

try:
    result = es.search(index="my_index", query={"match_all": {}})
except NotFoundError:
    # インデックスを作成
    es.indices.create(index="my_index")
    result = es.search(index="my_index", query={"match_all": {}})

関連エラー

関連エラー

Elasticsearch の他のエラー

最終更新: 2025-12-17