ElasticSearch 엔진 서버에 색인을 붙이고 있습니다. User라는 도메인 개체가 있습니다. 다음은 내가 사용중인 관련 코드입니다. 현재 다음과 같이 elasticsearch의 _id
속성은이 명령의 증분 값으로 설정됩니다 :Elasticsearch 용 Java API 사용하기 색인 생성 중에 문서 ID를 어떻게 매핑 할 수 있습니까?
bulkRequest.add(client.prepareIndex("heros", "entry", i+"")
을하지만 원더 우먼 또한 ID로 SN_NO있을 것이다 때문에, 임의의 ID가 증가하지 않을 그녀의 문서. 이 도메인 개체의 고유 ID (SN_NO)를 elasticsearch 엔진의 _id
에 매핑하려면 어떻게해야합니까? 내가 원하는 이유는 시간이 지남에 따라 waist_size와 같은 그녀의 속성 중 하나를 변경해야 할 수도 있기 때문입니다. 그리고 나는 원더걸스 (Wonder Women) 2 명과 얇은 허리를 가진 탄성 검검 엔진과 어리석은 예로서 또 다른 지방을 원한다.
오랜 질문을 드려 죄송합니다. 읽으면서 열심히 노력했습니다.
미리 감사드립니다.
공용 클래스 TestBulkElastic {
public static void main(String [] args) throws JsonGenerationException, JsonMappingException, IOException {
// Create User object
User user1 = new User();
user1.setGender(Gender.FEMALE);
Name n = new Name();
n.setFirst("Wonder");
n.setLast("Woman");
user1.setName(n);
user1.setVerified(false);
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("user.json"), user1);
HashMap<String,Object> fileResult =
new ObjectMapper().readValue(new File("user.json"), HashMap.class);
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "MyES").build();
Client client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("123.123.123.123", 9350));
BulkRequestBuilder bulkRequest = client.prepareBulk();
int batch = 10000;
int i = 0 ;
while(i < 10000000){
bulkRequest.add(client.prepareIndex("heros", "entry", i+"")
.setSource(fileResult));
if(i%batch == 0){
bulkRequest.execute().actionGet();
bulkRequest = null;
bulkRequest = client.prepareBulk();
}
i++;
}
}
}
제대로 코드를 들여하십시오로 사용할 수있는 필드를 가리 키도록 _id 필드의 경로를 설정, 그것은 ... 같은 – ramseykhalaf
감사를 읽고 정말 어렵다. 들여 쓰기를 수정했습니다. 이 코드는 라이브러리가있는 한 올바르게 컴파일해야합니다. User 클래스는 Name이라는 중첩 클래스를 포함하는 임의의 클래스이므로 중첩 된 jsons를 실험 할 수 있습니다. 제공 할 수있는 도움에 감사드립니다. –
나는 당신의 질문을 여러 번 읽었으며 그것을 이해하는 데 어려움을 겪고 있습니다 (비록 Java elasticsearch 플러그인을 사용하지 않았지만). 'SN_NO' 란 무엇입니까? 나는 당신의 코드에서 그것을 볼 수 없다 ... – ramseykhalaf