Media said six bombs went off and a Reuters witness saw police exchanging fire with gunmen. Several hours after the attacks began, the witness heard more gunfire and at least one more explosion.
Police suspected a suicide bomber was responsible for at least one of the blasts and up to 14 militant gunmen were involved in the attack, Metro TV reported.
Police snipers were deployed among hundreds of other security officers, some in armored vehicles.
Indonesia has been on edge for weeks over the threat posed by Islamist militants and counter-terrorism police have launched a crackdown on people with suspected links to Islamic State.
"We have previously received a threat from Islamic State that Indonesia will be the spotlight," police spokesman Anton Charliyan told reporters. But he said police did not know who was responsible.
An unknown number of people were injured in the security operations at the Sarinah shopping complex on Thamrin Street in the centre of Jakarta on Thursday.
Earlier police reports said at least five gunmen were killed and that another five policemen and seven civilians were also dead. Police later revised the toll to a total of seven, including four attackers, according to Al Jazeera.
All six blasts occurred about 50 metres apart in the central business district, which also houses a United Nations office.
At the same time, police say the situation is now under control, with five suspected attackers among at least seven people killed, accoridng to the BBC.
The last major militant attacks in Jakarta were in July 2009, with bombs at the JW Marriott and Ritz Carlton hotels.