我的列表中有2000个条目,并尝试通过API将此列表插入到elasticsearch中,这只是批量请求。 请查找以下代码。
for(Car car : carList){
elasticSearchService.addOrganization(car,"Car");
}
Code for ElasticSearch Service
@Autowired
private Client esClient;
private void addOrganization(Object object, String modelName){
Gson gson = new Gson();
final String json = gson.toJson(object);
esClient.prepareIndex("ElasticSearchIndex",modelName).setSource(json).execute().actionGet();
}
I have made following entry in elasticsearch.yml file
threadpool:
index:
size: 250
queue_size: 1000
当我们通过JMeter监视应用程序的性能时,我们发现我们的应用程序生成了2000个HTTP请求来连接并将数据放入elasticsearch 这项任务大约需要10秒。我们可以在esClient中建立连接池,还是有办法在elasticsearch服务器上进行配置,以便提高应用程序的性能, 响应时间会减少3秒钟?
答案 0 :(得分:0)
您说的是批量请求但未使用它们:
将您的代码更改为:
elasticSearchService.addOrganizations(carList,"Car");
您的ElasticSearch服务代码:
@Autowired
private Client esClient;
private void addOrganizations(List<Object> objects, String modelName){
BulkRequestBuilder bulkRequest = client.prepareBulk();
objects.forEach(object -> {
Gson gson = new Gson();
final String json = gson.toJson(object);
bulkRequest.add(esClient.prepareIndex("ElasticSearchIndex",modelName).setSource(json));
});
bulkRequest.get();
}
请参阅documentation以获取更多信息。