我正在将数据索引到 ElasticSearch 引擎服务器。我有一个名为 User 的域对象。下面是我正在使用的相关代码。现在,_id
elasticsearch 中的属性设置为该命令的增量值,如下所示:
bulkRequest.add(client.prepareIndex("heros", "entry", i+"")
但我不希望任意增加 id,因为 Wonder Woman 也会有一个 SN_NO 作为她文档的 id。如何将此域对象的唯一 ID (SN_NO) 映射到_id
弹性搜索引擎中的?我想要这个的原因是,我可能不得不随着时间的推移更改她的一个属性,例如腰围尺寸。而且我不希望弹性搜索引擎包含 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++;
}
}
}