OpenSearchのspan_termはanalyzerを通らないのでクエリ側で正規化が必要
OpenSearch
検索
技術知見
OpenSearch/Elasticsearch の span_term・term 系クエリは、match 系と違ってインデックス時の analyzer を通らず、与えた値をそのまま転置インデックスと突き合わせる。そのためインデックス側で asciifolding(ダイアクリティカル除去)/lowercase/全角半角正規化/かな正規化などを適用していると、クエリ側の生文字列とトークンが一致せず、ベトナム語など発音区別符号付きの語がヒットしなくなる。対策は、クエリ文字列に対してインデックスの analyzer と同等の前処理(lowercase・asciifolding 相当の NFKD 正規化など、適用順序も合わせる)を行うユーティリティを用意し、span_term/term へ渡す前に通すこと。toLowerCase だけではダイアクリティカルは除去されない点に注意。多言語の検索不具合は、こうした『analyzer を通らないクエリ種別』の存在をまず疑うとよい。