Register
Submit a solution
The challenge is finished.

Challenge Overview

Currently in Challenge Service, it is using dropwizard-elasticsearch to communicate with elasticsearch to query, which is TCP-based, this limits the usage of elasticsearch service, like AWS Elasticsearch Domain only support HTTP-based requests.

For this challenge, we'd like to drop the usage of  dropwizard-elasticsearch and use RESTful approach instead. Following are the general requirements.

1. The desired elasticsearch version is elasticsearch 2.3. 
2. Please use Jest, see https://www.elastic.co/blog/found-java-clients-for-elasticsearch#jest
3. The dependency to  dropwizard-elasticsearch and usage should be removed.
4. revise configuration file, make it possible to configure the elasticsearch url and the index name, these two configurations should be overridable through environment variables.
5. In order to support standard Elasticsearch and AWS ES (which uses signing requests), please implement two version of clients, and define a configuration to switch from, so we can easily switch between standard elasticsearch (local) and AWS ES (production).
6. ap-member-microservice is already used Jest to communicate with elasticsearch, you can take as a reference implementation.
6.1  service/src/main/java/com/appirio/service/member/util/ESClient.java
6.2  service/src/main/java/com/appirio/service/member/manager/MemberSuggestManager.java
etc

Testing

- Please follow the verification guide for create challenges in direct app and let elasticsearch feeder to populate into all_challenges index
- Verify that the related apis are working proerly, like /challenges/ and /members/{handle}/challenges api.

About Local Setup
- Please check https://github.com/appirio-tech/tc-common-tutorials/tree/master/docker/direct-app about how to build, deploy and run direct-app locally. 
- Be sure to start the elasticsearch feeder service, otherwise, the challenge service will not work
- Please use Topcoder Direct to setup the test challenge data.
- Please check ap-challenge-microservice.zip/docs/Deployment Guide.docx about how to run the service and test with the API.


Final Submission Guidelines

- Code changes for the requirements above
- Verification Steps

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30057602