LifeLogTLeaf/ShackServer — pull request #67 by YoungjinJang (2014-11-11 12:25:29+00:00)
Title: 일레스틱서치 디비 연동 로직, 유저도큐먼트 앱서비스정보 업데이트 로직.

* 일레스틱서치 디비 연동 로직은 회원가입시 수행하는 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());

}
```

* 유저 도큐먼트에 앱 서비스정보를 업데이트하는 로직을 추가
```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 {
//.....리퀘스트데이터 참고.
}
```

* UserInfo 클래스 필드 추가
```javascript
@JsonIgnoreProperties(ignoreUnknown=true)
public class UserInfo {
//....
@JsonProperty("services")
private ArrayList services;
```

* 앱별 데이터 조회에서 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);
}
}
```

* 일레스틱서치 설치. ( 로컬 )
brew install elastic search
* 일레스틱서치 디비 연동시 소스코드 변경사항

아래 소스코드(EsdbConnImple)에서 cluster.name의 "elasticsearch"를 로컬에 설치되있는 클러스터로 변경해야함. 클러스터 이름을 알아내는 curl 명령어는

curl -XGET "http://localhost:9200/_nodes"

명령어 실행시 cluster 이름을 보고 아래 소스코드에 추가!
```javascript
Settings settings = ImmutableSettings
.settingsBuilder()
.put("cluster.name","elasticsearch")
.build();
```