Mastodon

MastodonでElasticsearch7.0を使いたい

Elasticsearch7.0が出たようなので使ってみたい!
しかし、いくつか仕様の変更がありMastodonではそのままじゃ使えません。

https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.html

Mastodonではchewyを使用しており、chewyではMapping定義に型を使用してインデックスを作成します。
6.Xでは既に型の使用は非推奨ですが、アップグレードの準備のためにinclude_type_nameというオプションが用意してあります。
デフォルトがtrueのため、6.Xでは何もしなくても型は使用可能でした。

7.Xではこのinclude_type_nameのデフォルトがfalseに変更されました。
そのため、型を使用するには明示的にinclude_type_name=trueを指定する必要があります。

chewyはこのオプションに対応していないのでMastodonでインデックスを作成しようとした時にエラーになります。

それともう一つ、検索結果の応答の形式が変更されたようで今までと同じ形式にするにはrest_total_hits_as_int=trueを付ける必要があります。

両方共、chewyを改造すれば対応できるのですができれば触りたくない……。

上記オプションはクエリ文字列として付加すれば良いということがわかったので、chewyからElasticSearchのREST API呼び出す時に間にプロキシ挟んでオプション強制的に追加する事にしました。

nginxの設定

これで一応、chewyの改造しなくても使えるようになりました。
ただこのオプションはElasticSearch8.Xでは削除されるようなのでそれまでにChewyが対応してないとちょっと困ってしまいますね…。
chewyが7.Xに対応したらこの対応はもとに戻す予定です。