Search elasticsearch with java client using JSON query

It means you want build a query JSON first? you could try this :

import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

//{"query": {"term" : { "status": "404" }}}"
XContentBuilder query = XContentFactory.jsonBuilder();
query.startObject()
.startObject("query").startObject("term").field("status", "404").endObject()
.endObject();
System.out.println(query.string());
//{"query":{"term":{"status":"404"}}}
client.prepareSearch("index").setQuery(query).execute().actionGet();