これはElasticsearch Advent Calendar 2014 の24日目の記事です。 2019/12/03更新 ElasticUtils は開発終了し haystack も開発が停滞しているため、現在はElastic公式の elasticsearch-dsl-py を使うのが最もベターな選択肢でしょう。 前置き Django を使って検索機能を実装する場合、標準ORMである QuerySet を使うと思います。 しかし ORMを通してDBへクエリを発行するので、データ数が数十万件規模だったり、複数の Model をまたぐ検索だとJOINが多くなりパフォーマンスが出ません。 当然といえば当然ですね。 そこで、検索のバックエンドに Elasticsearch を導入するのが一つの案となります。 ここでは、Django に Elasticsearch を導入する方法をいくつか紹介し