A decade ago, David O. Russell was on quite a run, with three very good movies in a row: “The Fighter,” “Silver Linings Playbook,” and “American Hustle.” But then he stumbled with the Jennifer Lawrence vehicle, “Joy,” and he didn’t direct another big-screen movie for more than six years.

Now, he returns with “Amsterdam,” and while he has some of his mojo back, it’s not quite enough.

Far and away, the best thing about “Amsterdam” is its cast: Christian Bale, Margot Robbie, John David Washington, Anya Taylor-Joy, Chris Rock, Andrea Riseborough, Michael Shannon, Mike Myers, Taylor Swift, Timothy Olyphant, Zoe Saldana, Rami Malek, Ed Begley Jr. and Robert De Niro. That’s an amazingly talented ensemble, but the plot takes too long to get them where they’re going.

It’s pretty convoluted, and changes gears entirely in its last quarter, but the basic structure from the beginning is that Bale and Washington are veterans who were both injured in World War I. Robbie is a nurse who tends to them, and the three fall into a camaraderie pact that soon leads to them living in the Dutch capital, enjoying life and each other.

Fourteen years later, Taylor Swift appears as the sort of mystery woman who populates all great film noirs. She hires Washington to look into the suspicious death of her father, who was a general under whom he and Bale served. The latter, now a doctor who helps other vets get prosthetics and plastic surgery, agrees to conduct an autopsy — with the help of Saldana — and discovers that Swift’s father (Begley) had been poisoned.

Now it’s on our two heroes to figure out who the murderers might be, all while dodging the cops and some thugs who want to catch them first. The proceedings eventually involve some powerful people trying to pull off a political coup, based on a real-life plot in 1933 by wealthy American businessmen who wanted to depose FDR and install a dictator.

Russell obviously wanted to say something about our current political atmosphere, but the message is far too muddled along the way. I found myself nowhere near as interested in that storyline as in the love and friendship shared by Robbie, Washington, and Bale.

The movie also violates what I call the Shawshank Narration Rule. This is when movies are semi-narrated by one of the lead characters to fill gaping holes in the plot or get us from one time period to another. Filmmakers should never employ this device unless the narrator is Morgan Freeman. In the case of “Amsterdam,” it’s Bale who handles the voiceovers, which do nothing but make clear the weakness of Russell’s screenplay.

Speaking of Bale, even with a face full of flaws, including a glass eye, and hair like Albert Einstein’s in that poster every college boy had in his dorm room in the 1970s, he still manages to be as expressive as always. But for some reason, in “Amsterdam,” he seems to be doing a vocal impression of Al Pacino.

Robbie, on the other hand — with the help of an ace makeup team — has a face that shows no imperfections whatsoever, even in extreme close-up. Her character somehow remains luminous even when tending to injured soldiers or facing a near-breakdown. Washington, meanwhile, is perfect in his role as a lawyer who understands the system even though he has trouble solving the movie’s biggest puzzle. I’m really impressed by what a dynamic actor he’s become. And I couldn’t help but have my eyes drawn to Chris Rock every time he appeared.

Watching “Amsterdam” was frustrating, because all that talent — on both sides of the camera — should have produced something better. I’m not sure if Russell intended it to be a comedy, a drama with lighter moments, or a farce. Those styles are not mutually exclusive — they can (and often do) coexist within the same movie. But somehow, Russell couldn’t stitch the disparate parts together, and the result is only half as good as it should have been.

That’s why I’m giving “Amsterdam” a 5 out of 10. Opens in theaters today.