AWS CloudSearch



Java SDK 연동하는 CloudSearch 관련 문서가 없는거 같다. 


1. Document Update(JSON)


- Domain

@Setter
@Getter
@ToString
public class SearchDocument {
private String id;
private String type;
private SearchItem fields;
}


@Setter
@Getter
@ToString
public class SearchItem {
String id;
private String name;
String description;
String price;
String thumbnail;
Long fileSize;
String fileExtensions;
String creatorName;
String creatorEmail;
SearchItemKind kind;
String happenedDate;
String[] categoryNames;
Long[] categoryCodes;
}



- 위 Domain 을 JSON 으로 변환한 것

각 Object 최상위에 id 와 type, fields 는 필수로 존재해야 한다.

type 값에는 add, delete 두가지가 있다.

각 field type 에 허용되는 값에 대한 설명은 아래

http://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-index-fields.html

[
{
"id": "Marketplace_292",
"type": "add",
"fields": {
"id": "292",
"name": "Motion Graphics",
"description": "Motion Graphics description",
"price": "6.12",
"thumbnail": "http://**********/edbeb3e0-7c8c-4319-849b-863087f272c8.jpg",
"file_size": 21798,
"file_extensions": "jpg,png",
"creator_name": "hello",
"creator_email": "hello@hello.com",
"kind": "Marketplace",
"happened_date":"2016-03-26T05:12:32.545Z",
"category_names": [
"Video Motion",
"Motion Graphics",
"Overlays"
],
"category_codes": [
30,
210,
1775
]
}
}
]



Java Code


AmazonCloudSearchDomainClient domain
= new AmazonCloudSearchDomainClient(S3Manager.getCredentials());
domain.setEndpoint("********");

Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();

String str = gson.toJson(getSearchDocuments());

byte[] bytes = str.getBytes("UTF-8");

InputStream is = new ByteArrayInputStream(bytes);

UploadDocumentsRequest req = new UploadDocumentsRequest();
req.setContentType(ContentType.Applicationjson);
req.setDocuments(is);
req.setContentLength(0L + bytes.length);

UploadDocumentsResult result = domain.uploadDocuments(req);




'AWS > CloudSearch' 카테고리의 다른 글

[CloudSearch] Java SDK 사용하여 Search 하기  (0) 2016.03.29
[CloudSearch] Java SDK 로 document update  (0) 2016.03.28
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



AWS RDS


기존 개발 환경은 로컬과 STG - US.EAST Region EC2 의 WAS 에서


Toyko Region MySQL 을 바라보고 있었는데


Seoul Region 이 생겨서 로컬에서 더 빠르게 응답받고자 RDS.MySQL 을 생성했다.



로컬 앱과 WorkBench 에서는 별 문제 없이 잘 동작되는데


US.EAST 의 EC2 WAS 에서 DB Connection error 가 발생했다.


Security Group 은 Default 를 사용했는데 Inbound Rules 은


All Traffic 으로 되어 설정 돼있었는데, 


아래와 같이 TCP 를 따로 추가하니 DB 연결이 정상적으로 되더라.


US.EAST RDS 는 저 rule 을 추가하지 않아도 문제없었는데, 왜 Seoul Region 만 이런지는 잘모르겠다.







'AWS > RDS' 카테고리의 다른 글

[RDS] Seoul Region 에서 RDS 생성 후 TCP 접근 안되는 문제  (0) 2016.03.24
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



Spring 에서 @PathVariable 사용하여 값을 넘겨받을때 값에 . 가 포함되어 있으면 .포함하여 그뒤가 잘려서 들어온다.



@RequestMapping(value = "/user/email/{email}", method=RequestMethod.GET)


위와같은 형식일때 아래와 같이 바꿔주면 제대로 들어온다.



@RequestMapping(value = "user/email/{email:.+}", method = RequestMethod.GET)
public ModelAndView getUserByEmail(@PathVariable("email") String email) {


http://stackoverflow.com/questions/16332092/spring-mvc-pathvariable-with-dot-is-getting-truncated



YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST