일레스틱서치 디비 연동 로직, 유저도큐먼트 앱서비스정보 업데이트 로직.

* 일레스틱서치 디비 연동 로직은 회원가입시 수행하는 userSignUp 메서드에서 수행. couchDbInstance.createDatabase( "user_" + userInfo.getHashId() ); 로 유저데이터베이스 생성후 이를 일레스틱서치디비와 연동.
```javascript
@Override
public String userSignUp( UserInfo userInfo ) throws CustomException {
 //....
 couchDbInstance.createDatabase( "user_" + userInfo.getHashId() );
 // Because a database name should start with an letter

 /* Young edited */
 // elasticSearch DB create
 esdbConn.replication("user_" + userInfo.getHashId());
 
}
```
<br><br>
* 유저 도큐먼트에 앱 서비스정보를 업데이트하는 로직을 추가
```javascript
@RequestMapping( value = "/user" , method = RequestMethod.POST )
@ResponseBody
@ApiOperation( httpMethod = "POST" , value = "update UserInfo" )
public UserInfo updateUserInfo( HttpServletRequest request,
		@RequestBody(required = false) RawData rawData ) throws CustomException {
  //.....리퀘스트데이터 참고.	
}
```
<br><br>
* UserInfo 클래스 필드 추가
```javascript
@JsonIgnoreProperties(ignoreUnknown=true) 	
public class UserInfo {
	//....
	@JsonProperty("services")
	private ArrayList<Map> services;
```
<br><br>
* 앱별 데이터 조회에서 RestApiServiceImple에 startKey와 endKey로직 추가 ( 전체 데이터 조회와 같은 로직임 )
```javascript
@Override
public ResponseDataWrapper getUserDataFromAppId(RequestParameter param) throws Exception {
  // check Descend 
  if(!param.isDescend()){
	String temp = param.getStartKey();
	param.setStartKey(param.getEndKey());
	param.setEndKey(temp);
  }
}
```
<br><br><br><br>
* 일레스틱서치 설치. ( 로컬 )
 brew install elastic search
* 일레스틱서치 디비 연동시 소스코드 변경사항<br>
아래 소스코드(EsdbConnImple)에서 cluster.name의 "elasticsearch"를 로컬에 설치되있는 클러스터로 변경해야함. 클러스터 이름을 알아내는 curl 명령어는 <br>
curl -XGET "http://localhost:9200/_nodes" <br>
명령어 실행시 cluster 이름을 보고 아래 소스코드에 추가!
```javascript
Settings settings = ImmutableSettings
                .settingsBuilder()
                .put("cluster.name","elasticsearch")
                .build();
```