我已经写了一个程序,批量插入到elasticsearch中,批量大约3000个。问题是,在执行批量插入请求之前,我需要将这些对象转换为json。但是json转换有一个主要的缺点,它正成为我整个计算的一个瓶颈。
有谁能推荐一种在java中将对象转换为json的超快速方法吗。我的代码如下所示:
private String getESValueAsString(ElasticSearchValue elasticSearchValue) throws JsonProcessingException {
ElasticSearchValue prevValue = null;
if (stateType == StateType.OPAQUE) {
prevValue = (ElasticSearchValue) elasticSearchValue.getPrevious();
}
elasticSearchValue.setPrevious(null);
ObjectMapper om = new ObjectMapper();
Map<String, Object> props = om.convertValue(elasticSearchValue, Map.class);
if (stateType == stateType.OPAQUE) {
props.put("previous", prevValue);
}
return om.writeValueAsString(props);
}
2条答案
按热度按时间9vw9lbht1#
刚刚发现的问题是,我为每个序列化创建了太多的objectmapper,这使得我的整个处理过程很慢。这是一个非常好的指南,它提高了我的性能100倍
http://wiki.fasterxml.com/jacksonbestpracticesperformance
plupiseo2#
为什么不直接插入
BulkRequestBuilder
首先是json记录,类似这样的而且在
<your object> class
创建Gson
这样地:方法和步骤: