Elasticsearchの要は「スケーラビリティ」と「カスタマイズ性」
――続いてビズリーチさんに、Elasticsearchユーザーの視点で伺いたいと思います。今回、求人検索エンジン「スタンバイ」にElasticsearchを導入した背景を聞かせてください。
竹内真氏(以下、竹内):検索エンジンを作る上で、エンジンのコアになる製品を商用/オープンソースを問わず、ありとあらゆるものを探しました。中でも経験上長く使っていたApache Solrと比べてどうなのか、という観点で比較しました。
スタンバイは、現時点のデータ量でいうと400万件の求人情報を扱っていて、毎日100万件程度の情報がアップデートされています。データの総量というより、トランザクションが多い使い方です。
Elasticsearchで一番よいと感じたのが、スケーラビリティです。スタンバイは最終的には全世界の求人情報をカバーしようと考えているのですが、Elasticsearchは小さく始めて最後までシームレスにそのまま拡張できるという点が優れています。
また、先ほどシャイもElasticsearchの製品コンセプトとして説明していましたが、質問に正しく答えるというのは実際難しく、不特定多数の人間が質問をする場合、質問が少し間違っていたり、抽象的だったりするので、機械的にデータを返すだけでは要求を満たせません。人間らしい自然言語のようなファジーな結果を返すためには、たくさんのカスタマイズやパーソナライズが必要で、その細かいチューニングのしやすさも製品採用のポイントと考えています。Elasticsearchは、そのスピーディで簡易なカスタマイズ性も、製品のコアになっていると思います。
1年前から使っていますが、日本語対応で困ることなどもありませんでした。
――実際、どれくらいカスタマイズに注力するものなのでしょうか。
竹内:スタンバイの検索エンジンは、キーワードと勤務地の組み合わせで検索を行いますが、例えば「飲食 東京都」と検索した場合、その人はもしかしたら飲食の戦略を考えている人かもしれませんし、店舗開発をしている人かもしれません。一方で「飲食 代官山」と検索した場合は、カフェの店員を探しているかもしれない。このように、ユーザーが何を考え、どのような情報を探しているかは、シチュエーションによって異なるため、ロケーションの粒度や性質によって異なる結果を返す必要があります。この辺りのカスタマイズがサービスの質に大きく影響してくるので、非常に力を入れています。
機械学習などもかなり取り入れています。検索キーワードが同じ場合に、よりクリックされたものが重要な情報である可能性が高いという判断や、よくある給与額が非公開の求人情報に対し類似している給与体系から給与額を推定するといった処理に活用しています。
――どのような規模でElasticsearchを使っているのでしょうか。
竹内:サービスのプロトタイプを作った1年前は冗長化を含め2台、現在は5台で運用しています。テレビやニュースサイトで取り上げられると、トラフィックがバーストすることがありますが、シンプルにElasticsearchのインスタンスを増やすことで対応できるようにしていて、Elasticsearchのスケーラビリティを実感しています。サーバーはAWS上に置いてあるので、スケールアウトもスケールアップもやりやすいです。
