查询interests字段包含changge并且不包含lvyou,或者address字段包含bei jing的文档,并且前面两种都要满足birthday>="1980-01-01"
@Test public void testBoolQuery() throws IOException, InterruptedException, ExecutionException { //指定集群 Settings settings = Settings.builder().put("cluster.name","my-application").build(); //创建客户端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.43.151"),9300)); //创建查询对象,查询interests字段包含changge并且不包含lvyou,或者address字段包含bei jing的文档,并且前面两种都要满足birthday>="1980-01-01" QueryBuilder qb = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("interests","changge")) .mustNot(QueryBuilders.matchQuery("interests","lvyou")) .should(QueryBuilders.matchQuery("address", "bei jing")) .filter(QueryBuilders.rangeQuery("birthday").gte("1980-01-01").format("yyyy-MM-dd")); //执行查询 SearchResponse sr = client.prepareSearch("lib3") .setQuery(qb) .get(); //获取结果 SearchHits hits = sr.getHits(); for(SearchHit hit:hits) { //输出json System.out.println(hit.getSourceAsString()); //输出json的key与value Map<String, Object> map = hit.getSourceAsMap(); for(String key:map.keySet()) { System.out.println(key+"="+map.get(key)); } } client.close(); }