---
generated_at: 2026-01-29 10:30:00
metrics:
  claims_total: 140
  claims_with_evidence: 138
  claims_without_evidence: 2
confidence_derived: 0.99
---

# 根拠レポート：Elasticsearch単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各テストケースに対して、ソースコードの該当メソッド・クラスが存在するか
2. **根拠との整合性**：テストケースの内容が実際のコード実装と矛盾していないか
3. **網羅性**：主要なパブリックメソッドおよびビジネスロジックをカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.99**
  - 根拠あり：138 / 140、根拠なし：2
- 優先レビュー（高）
  1. **UT-ELS-114 (fetch - Visibility検証)**: 実際の挙動確認が必要
  2. **UT-ELS-106 (search - 検索演算子変換)**: 正規表現変換の詳細確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Elasticsearch/Framework/ElasticsearchHelper.php`
- E-02: `src/Elasticsearch/Framework/ElasticsearchRegistry.php`
- E-03: `src/Elasticsearch/Framework/DataAbstractionLayer/CriteriaParser.php`
- E-04: `src/Elasticsearch/Framework/DataAbstractionLayer/ElasticsearchEntitySearcher.php`
- E-05: `src/Elasticsearch/Framework/DataAbstractionLayer/ElasticsearchEntityAggregator.php`
- E-06: `src/Elasticsearch/Framework/Indexing/ElasticsearchIndexer.php`
- E-07: `src/Elasticsearch/Framework/Indexing/IndexCreator.php`
- E-08: `src/Elasticsearch/Framework/Indexing/IndexerOffset.php`
- E-09: `src/Elasticsearch/Framework/Indexing/CreateAliasTaskHandler.php`
- E-10: `src/Elasticsearch/Framework/ElasticsearchOutdatedIndexDetector.php`
- E-11: `src/Elasticsearch/Admin/AdminElasticsearchHelper.php`
- E-12: `src/Elasticsearch/Admin/AdminSearchRegistry.php`
- E-13: `src/Elasticsearch/Admin/AdminSearcher.php`
- E-14: `src/Elasticsearch/Product/ProductSearchQueryBuilder.php`
- E-15: `src/Elasticsearch/Product/ElasticsearchProductDefinition.php`
- E-16: `src/Elasticsearch/TokenQueryBuilder.php`
- E-17: `src/Elasticsearch/Framework/ElasticsearchFieldBuilder.php`
- E-18: `src/Elasticsearch/Framework/ElasticsearchFieldMapper.php`
- E-19: `src/Elasticsearch/ElasticsearchException.php`
- E-20: `src/Elasticsearch/Framework/AbstractElasticsearchDefinition.php`

## 3) Claims と根拠の対応（レビューの主戦場）

### ElasticsearchHelper (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | コンストラクタでプロパティが正しく設定される | E-01 L28-38 | ○ |
| C-02 | test環境で例外がスローされる | E-01 L41-50 | ○ |
| C-03 | throwException=trueで例外がスローされる | E-01 L41-50 | ○ |
| C-04 | throwException=falseでfalseが返却される | E-01 L41-50 | ○ |
| C-05 | インデックス名が正しく生成される | E-01 L55-58 | ○ |
| C-06 | インデクシングが許可される場合trueを返却 | E-01 L60-71 | ○ |
| C-07 | indexingEnabled=falseの場合falseを返却 | E-01 L60-71 | ○ |
| C-08 | サーバーが利用不可の場合falseを返却 | E-01 L60-71 | ○ |
| C-09 | 検索が許可される場合trueを返却 | E-01 L76-87 | ○ |
| C-10 | searchEnabled=falseの場合falseを返却 | E-01 L76-87 | ○ |
| C-11 | definitionがサポートされていない場合falseを返却 | E-01 L76-87 | ○ |
| C-12 | ELASTICSEARCH_AWAREステートがない場合falseを返却 | E-01 L76-87 | ○ |
| C-13 | IDsが空でない場合にフィルタクエリが追加される | E-01 L89-107 | ○ |
| C-14 | IDsが空の場合は何もしない | E-01 L89-107 | ○ |
| C-15 | フィルタがSearchに追加される | E-01 L109-124 | ○ |
| C-16 | フィルタが空の場合は何もしない | E-01 L109-124 | ○ |
| C-17 | ポストフィルタがSearchに追加される | E-01 L126-141 | ○ |
| C-18 | 検索ワードがクエリに追加される | E-01 L143-158 | ○ |
| C-19 | termが空の場合は何もしない | E-01 L143-158 | ○ |
| C-20 | definition未登録の場合例外がスローされる | E-01 L143-158 | ○ |
| C-21 | クエリがBoolQueryとして追加される | E-01 L160-186 | ○ |
| C-22 | ソートがSearchに追加される | E-01 L188-195 | ○ |
| C-23 | 集約がSearchに追加される | E-01 L197-213 | ○ |
| C-24 | 登録済みdefinitionの場合trueを返却 | E-01 L229-234 | ○ |
| C-25 | 未登録definitionの場合falseを返却 | E-01 L229-234 | ○ |

### ElasticsearchRegistry (E-02)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | definitionsが正しく設定される | E-02 L15-17 | ○ |
| C-27 | 全てのdefinitionsが返却される | E-02 L22-25 | ○ |
| C-28 | 全てのentity名が返却される | E-02 L30-39 | ○ |
| C-29 | 指定entity名のdefinitionが返却される | E-02 L41-49 | ○ |
| C-30 | 存在しないentity名の場合nullを返却 | E-02 L41-49 | ○ |
| C-31 | 登録済みentity名の場合trueを返却 | E-02 L52-61 | ○ |
| C-32 | 未登録entity名の場合falseを返却 | E-02 L52-61 | ○ |

### CriteriaParser (E-03)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | 通常フィールドのアクセサが正しく生成される | E-03 L91-132 | ○ |
| C-34 | ネストしたフィールドのアクセサが正しく生成される | E-03 L91-132 | ○ |
| C-35 | PriceFieldの場合にgross/netが考慮される | E-03 L109-131 | ○ |
| C-36 | PriceFieldで明示的にnetが指定された場合 | E-03 L109-131 | ○ |
| C-37 | FieldSortが正しく生成される | E-03 L134-145 | ○ |
| C-38 | ネストパスがある場合にnestedパラメータが追加される | E-03 L134-145 | ○ |
| C-39 | Aggregationが正しく解析される | E-03 L147-168 | ○ |
| C-40 | ネストフィールドの場合NestedAggregationでラップされる | E-03 L147-168 | ○ |
| C-41 | EqualsFilterが正しく解析される | E-03 L528-597 | ○ |
| C-42 | EqualsFilterでnull値の場合ExistsQueryのMUST_NOTが返却される | E-03 L559-575 | ○ |
| C-43 | EqualsAnyFilterが正しく解析される | E-03 L599-627 | ○ |
| C-44 | ContainsFilterがWildcardQueryに変換される | E-03 L653-681 | ○ |
| C-45 | PrefixFilterがPrefixQueryに変換される | E-03 L683-709 | ○ |
| C-46 | SuffixFilterがWildcardQueryに変換される | E-03 L712-738 | ○ |
| C-47 | RangeFilterがRangeQueryに変換される | E-03 L741-791 | ○ |
| C-48 | NotFilterがBoolQuery(MUST_NOT)に変換される | E-03 L817-855 | ○ |
| C-49 | MultiFilter(AND)がBoolQuery(MUST)に変換される | E-03 L867-889 | ○ |
| C-50 | MultiFilter(OR)がBoolQuery(SHOULD)に変換される | E-03 L892-904 | ○ |
| C-51 | MultiFilter(XOR)が正しく処理される | E-03 L906-928 | ○ |
| C-52 | cheapestPriceフィールドの場合ScriptQueryが使用される | E-03 L530-552 | ○ |
| C-53 | サポートされていないフィルタの場合例外がスローされる | E-03 L170-183 | ○ |
| C-54 | 許可されていないオペレータの場合例外がスローされる | E-03 L857-865 | ○ |

### ElasticsearchEntitySearcher (E-04)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | 検索が成功した場合IdSearchResultが返却される | E-04 L49-108 | ○ |
| C-56 | allowSearch=falseの場合decoratedにフォールバック | E-04 L51-53 | ○ |
| C-57 | limit=0の場合空のIdSearchResultが返却される | E-04 L55-57 | ○ |
| C-58 | EMPTY_QUERY例外の場合空のIdSearchResultが返却される | E-04 L100-102 | ○ |
| C-59 | その他の例外の場合decoratedにフォールバック | E-04 L104-106 | ○ |
| C-60 | EXPLAIN_MODEの場合explain関連パラメータが追加される | E-04 L78-81, L136-138 | ○ |

### ElasticsearchEntityAggregator (E-05)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | 集約が成功した場合AggregationResultCollectionが返却される | E-05 L38-81 | ○ |
| C-62 | allowSearch=falseの場合decoratedにフォールバック | E-05 L41-43 | ○ |
| C-63 | 集約が0件の場合空のCollectionが返却される | E-05 L45-47 | ○ |

### ElasticsearchIndexer (E-06)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | インデクシングメッセージが正しく処理される | E-06 L46-53 | ○ |
| C-65 | allowIndexing=falseの場合何もしない | E-06 L48-49 | ○ |
| C-66 | offsetがnullの場合に初期化が行われる | E-06 L58-69 | ○ |
| C-67 | 次のdefinitionがない場合nullが返却される | E-06 L103-131 | ○ |
| C-68 | 指定IDsが正しくインデックスされる | E-06 L74-87 | ○ |
| C-69 | alias存在しない場合に初期化される | E-06 L82-84 | ○ |

### IndexCreator (E-07)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 | 新規インデックスが作成される | E-07 L48-79 | ○ |
| C-71 | 既存インデックスがある場合削除されて再作成される | E-07 L50-54 | ○ |
| C-72 | alias存在しない場合にaliasが作成される | E-07 L91-104 | ○ |
| C-73 | インデックス作成失敗時に例外がスローされる | E-07 L66-74 | ○ |
| C-74 | alias存在確認がtrueを返却 | E-07 L81-84 | ○ |
| C-75 | alias不存在確認がfalseを返却 | E-07 L81-84 | ○ |

### IndexerOffset (E-08)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | definitionsが正しく設定される | E-08 L26-41 | ○ |
| C-77 | 次のdefinitionが選択される | E-08 L43-46 | ○ |
| C-78 | definitionsがリセットされる | E-08 L48-52 | ○ |
| C-79 | 次のdefinitionがある場合trueを返却 | E-08 L54-57 | ○ |
| C-80 | definitionsが空の場合falseを返却 | E-08 L54-57 | ○ |

### CreateAliasTaskHandler (E-09)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-81 | キューが正しく処理される | E-09 L44-122 | ○ |
| C-82 | doc_count>0の場合スキップされる | E-09 L97-99 | ○ |
| C-83 | キューが空の場合何もしない | E-09 L85-88 | ○ |
| C-84 | 例外発生時にログされ再スローされない | E-09 L46-51 | ○ |

### ElasticsearchOutdatedIndexDetector (E-10)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-85 | aliasのないインデックスが検出される | E-10 L24-42 | ○ |
| C-86 | インデックスがない場合空配列が返却される | E-10 L27-29 | ○ |
| C-87 | 全てのインデックス名が返却される | E-10 L47-52 | ○ |

### AdminElasticsearchHelper (E-11)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | 有効状態が返却される | E-11 L21-24 | ○ |
| C-89 | 有効状態が設定される | E-11 L33-38 | ○ |
| C-90 | インデックス名が正しく生成される | E-11 L50-53 | ○ |
| C-91 | アンダースコアとスペースがハイフンに変換される | E-11 L50-53 | ○ |

### AdminSearchRegistry (E-12)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-92 | インデクシングメッセージが正しく処理される | E-12 L76-81 | ○ |
| C-93 | 全エンティティがイテレートされる | E-12 L92-132 | ○ |
| C-94 | adminEsEnabled=falseの場合何もしない | E-12 L94-96 | ○ |
| C-95 | onlyEntitiesが指定された場合フィルタされる | E-12 L101-102 | ○ |
| C-96 | skipEntitiesが指定された場合除外される | E-12 L103-104 | ○ |
| C-97 | EntityWrittenイベントで更新がトリガーされる | E-12 L134-178 | ○ |
| C-98 | adminEsEnabled=falseの場合refresh何もしない | E-12 L136-137 | ○ |
| C-99 | 指定名のindexerが返却される | E-12 L188-196 | ○ |
| C-100 | 存在しないindexer名の場合例外がスローされる | E-12 L195 | ○ |
| C-101 | 全indexerのマッピングが更新される | E-12 L198-207 | ○ |

### AdminSearcher (E-13)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-102 | 検索結果が正しく返却される | E-13 L39-109 | ○ |
| C-103 | ACL不許可のエンティティがスキップされる | E-13 L49-51 | ○ |
| C-104 | 未登録エンティティがスキップされる | E-13 L53-57 | ○ |
| C-105 | 検索語がtermMaxLengthでカットされる | E-13 L41 | ○ |
| C-106 | or/and/notが正しく変換される | E-13 L44-46 | △ |

### ProductSearchQueryBuilder (E-14)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-107 | 検索クエリが正しく構築される | E-14 L42-117 | ○ |
| C-108 | トークンが空の場合例外がスローされる | E-14 L52-54 | ○ |
| C-109 | andLogic=falseの場合オリジナルtermが使用される | E-14 L65-67 | ○ |

### ElasticsearchProductDefinition (E-15)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-110 | 製品マッピングが正しく生成される | E-15 L54-175 | ○ |
| C-111 | searchQueryBuilderに委譲される | E-15 L180-183 | ○ |
| C-112 | 製品データが正しくフェッチされる | E-15 L190-341 | ○ |
| C-113 | 空のIDsの場合空配列が返却される | E-15 L192-195 | ○ |
| C-114 | visibilityがない製品がスキップされる | E-15 L245-248 | △ |

### TokenQueryBuilder (E-16)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-115 | トークンクエリが正しく構築される | E-16 L55-111 | ○ |
| C-116 | TranslatedFieldの場合言語チェーンが考慮される | E-16 L207-250 | ○ |
| C-117 | ネストフィールドの場合NestedQueryでラップされる | E-16 L91-93 | ○ |
| C-118 | configsが空の場合nullが返却される | E-16 L102-104 | ○ |
| C-119 | EXPLAIN_MODEの場合_nameパラメータが追加される | E-16 L263-286 | ○ |

### ElasticsearchFieldBuilder (E-17)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-120 | 翻訳フィールドマッピングが正しく生成される | E-17 L32-51 | ○ |
| C-121 | 言語アナライザーが適用される | E-17 L45-47 | ○ |
| C-122 | カスタムフィールドマッピングが正しく生成される | E-17 L58-69 | ○ |
| C-123 | datetime型マッピングが正しく生成される | E-17 L78-85 | ○ |
| C-124 | nested型マッピングが正しく生成される | E-17 L94-103 | ○ |

### ElasticsearchFieldMapper (E-18)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-125 | 翻訳値が言語別に正しくマップされる | E-18 L45-75 | ○ |
| C-126 | fallbackItemsが継承される | E-18 L45-75 | ○ |
| C-127 | stripText=trueでテキストがストリップされる | E-18 L67-69 | ○ |
| C-128 | 多対多関連が正しくグループ化される | E-18 L113-143 | ○ |
| C-129 | カスタムフィールドが正しくフォーマットされる | E-18 L154-172 | ○ |
| C-130 | BOOL型が正しくキャストされる | E-18 L202-203 | ○ |

### ElasticsearchException (E-19)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-131 | DEFINITION_NOT_FOUNDエラーが返却される | E-19 L30-38 | ○ |
| C-132 | UNSUPPORTED_DEFINITIONエラーが返却される | E-19 L40-48 | ○ |
| C-133 | INDEXING_ERRORエラーが返却される | E-19 L53-68 | ○ |
| C-134 | mapper_parsing_exceptionの場合特別なメッセージが含まれる | E-19 L57-60 | ○ |
| C-135 | SERVER_NOT_AVAILABLEエラーが返却される | E-19 L120-127 | ○ |
| C-136 | EMPTY_QUERYエラーが返却される | E-19 L129-136 | ○ |
| C-137 | EMPTY_INDEXING_REQUESTエラーが返却される | E-19 L147-154 | ○ |
| C-138 | INDEX_CREATION_ERRORエラーが返却される | E-19 L159-167 | ○ |
| C-139 | UNSUPPORTED_FILTERエラーが返却される | E-19 L90-98 | ○ |
| C-140 | UNSUPPORTED_AGGREGATIONエラーが返却される | E-19 L80-88 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-106 (AdminSearcher.search - 検索演算子変換)**: `mb_eregi_replace`による正規表現変換の詳細な動作確認が必要。特にエッジケース（大文字小文字混在、連続スペースなど）の挙動は実際のテストで確認が必要。
  - 候補：AdminSearcherTest / 手動テスト
- **C-114 (ElasticsearchProductDefinition.fetch - Visibility検証)**: visibilityが完全に空の場合のスキップ処理は実装されているが、部分的に空の場合やnullの場合の挙動は詳細確認が必要。
  - 候補：ElasticsearchProductDefinitionTest / 手動テスト

## 5) リスクフラグ（レビュー観点）
- **リスク0（低）**: 例外クラス生成テスト（C-131〜C-140）- 単純な静的ファクトリメソッド
- **リスク1（中）**: フィールドマッピング・変換テスト - 型変換やnull処理の網羅性
- **リスク2（高）**: 検索クエリ構築テスト（C-41〜C-54）- 複雑なフィルタ組み合わせ、cheapestPrice処理

## 6) レビュアーチェックリスト（最小）
- [ ] ElasticsearchHelper.allowSearch()の条件分岐が全て網羅されているか確認
- [ ] CriteriaParser.parseFilter()のフィルタ種類網羅性を確認
- [ ] TranslatedField処理時の言語チェーン考慮が正しいか確認
- [ ] cheapestPriceフィールドの特殊処理が全ケースカバーされているか確認
- [ ] AdminSearcherの検索演算子変換（or/and/not）のエッジケース確認
- [ ] ElasticsearchProductDefinition.fetch()のvisibility処理の詳細確認
- [ ] IndexCreator.createIndex()の例外処理パスが正しくテストされるか確認
- [ ] AdminSearchRegistry.refresh()のSalesChannelApiSource判定ロジック確認
