Elasticsearchで自分でAnalyzerを定義した時、意図通りにAnalyzeできているか確かめたいことがある。この場合、elasticsearch-inquisitorを使う方法と、fielddata_fieldsを使う方法がある。
elasticsearch-inquisitorを使う方法
elasticsearch-inquisitorプラグインの紹介-@johtaniの日記 3rd | @johtani's blog 3rd edition に詳しいことは書かれているので参考に。
このプラグインを使えば、自分で適当な文字列を入力して、デフォルトのAnalyzerの挙動や、自分で設定したマッピングのAnalyzerの挙動を確認できる。
以下のスクショは、「隣の客はよく柿食う客だ」という文章に対して、デフォルトのAnalyzerはどう解釈するかや、自分で定義したja_keyword_analyzer、ja_text_analyzerがどう機能するか確認してみた例である。
fielddata_fields
自分で文字列を入力する以外に、実際にElasticsearchに投入したデータがどのように解析されて、termとして登録されているか確認したいことがある。この場合はsearch APIに対して、fielddata_fieldsというオプションを渡せばいい。ドキュメントは https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-fielddata-fields.html 。
例えば以下のようなクエリをsearch APIに対して発行する。
{ "query": { "match_all": {}}, "fielddata_fields": ["title"] }
すると、hitsのそれぞれの結果の中にfieldsという名前のキーが追加されて、その中にtitleフィールドがAnalyzeされてどのようなtermになったかが入っている。これで実際のドキュメントがどのようなtermを持っているのか確認することができる。