public static void Main()
Query<string>.Terms(q => q.Field("sample").Terms(new string[] { "a", "b" })) &&
Query<string>.Terms(q => q.Field("sample").Terms(new string[] { "c", "d" }));
var query2 = Query<dynamic>.Bool(b => b.Must(new QueryContainer[] {
Query<string>.Terms(q => q.Field("sample").Terms(new string[] { "a", "b" })),
Console.WriteLine(PrintQuery(GetClient(), query || query2));
public static IElasticClient GetClient() {
var connection = new InMemoryConnection();
var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(connectionPool, connection);
return new ElasticClient(settings);
public static string PrintQuery(IElasticClient esClient, QueryContainer search)
using (var ms = new MemoryStream())
esClient.Serializer.Serialize(search, ms);
return System.Text.Encoding.UTF8.GetString(ms.ToArray());