You're close. the Bool() Must() takes a params Func<QueryContainerDescriptor<T>, QueryContainer>[] so can accept multiple lambda expressions
client.Search<StageCapacity>(s => s
.Index("consolidated-capacity")
.Type("StageCapacity")
.Query(q => q
.ConstantScore(cs => cs
.Filter(f => f
.Bool(b => b
.Must(
m => m.Term("Week.keyword", "1712"),
m => m.Term("CountAsFailure.keyword", "TRUE"),
m => m.Term("Week.keyword", "1")
)
)
)
)
)
);
or the shorthand
client.Search<StageCapacity>(s => s
.Index("consolidated-capacity")
.Type("StageCapacity")
.Query(q => q
.ConstantScore(cs => cs
.Filter(f => f
.Term("Week.keyword", "1712") && f
.Term("CountAsFailure.keyword", "TRUE") && f
.Term("Week.keyword", "1")
)
)
)
);