どのようなサービスか?
===
企業の膨大な社内ドキュメントをフォーマット問わず、インデキシングし、検索・アクセスを可能にするシステム。
どのような業務を行ったか
===
内部の検索エンジンを独自実装から[Elasticsearch](https://www.elastic.co/jp/products/elasticsearch)に置き換えることでインデックス作成・検索性能の向上させることが最終的なゴールでした。そのため以下の作業を行いました。項目1に関しては主体で設計・実装を行ったので詳細を記述させていただきます。
1. 検索機能のクエリ設計・実装
2. Elasticsearchのマッピング設計
3. Elasticsearchインデキシング/検索性能のベンチマーク取得
4. 64bit対応
検索機能のクエリ設計・実装
===
要件
---
- 絞り込み条件検索、カテゴリ別検索、全文検索などの基本的な検索クライアントを作成してほしい
- UI含め現行の仕様はできるだけ踏襲してほしい
使用技術
---
- [Elasticsearch](https://www.elastic.co/jp/products/elasticsearch)
- Java6, Java8
- jQuery
課題と対応
---
### 1. 現行仕様のドキュメント化
背景として、前リリース時のメンバーが他のプロジェクトへ異動しており、さらにプロジェクトが停滞していた状況だったため(アサイン時はPM、PL含め3名)、深く仕様を理解しているメンバーがいない状況でした。そのため、既存のドキュメントや現行の仕様を調査し、Git Labのwikiで共有しました。また、現行仕様と齟齬がないよう、リグレッションテストの仕様書を作成しました。
### 2. javaのバージョンアップ
Elasticsearchがjava8以上でしか動作しないのに対し、システムがjava6でしか動作しなかったため、まずはバージョンをあげる対応を行いました。
### 3. Elasticsearchのクエリ作成
主に以下のAPIを使用して検索クライアントの実装を行いました。
1. [Get API](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html)
2. [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html)
3. [Bucket Aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket.html)