20 WrapperQuery 实现方式理论基础 https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-wrapper-query.html
This query is more useful in the context of the Java high-level REST client or transport client to also accept queries as json formatted string. In these cases queries can be specified as a json or yaml formatted string or as a query builder (which is a available in the Java high-level REST client).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 GET /_search { "query" : { "wrapper" : { "query" : "eyJ0ZXJtIiA6IHsgInVzZXIiIDogIktpbWNoeSIgfX0=" } } }
https://blog.csdn.net/qq\_41370896/article/details/83658948
1 2 3 4 5 String dsl = "" ;Map maps = (Map)JSON.parse(dsl); maps.get("query" );
https://blog.csdn.net/tcyzhyx/article/details/84566734
https://www.jianshu.com/p/216ca70d9e62
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 StringBuffer dsl = new StringBuffer ();dsl.append("{\"bool\": {" ); dsl.append(" \"must\": [" ); dsl.append(" {" ); dsl.append(" \"term\": {" ); dsl.append(" \"mdid.keyword\": {" ); dsl.append(" \"value\": \"2fa9d41e1af460e0d47ce36ca8a98737\"" ); dsl.append(" }" ); dsl.append(" }" ); dsl.append(" }" ); dsl.append(" ]" ); dsl.append(" }" ); dsl.append("}" ); WrapperQueryBuilder wqb = QueryBuilders.wrapperQuery(dsl.toString());SearchResponse searchResponse = client.prepareSearch(basicsysCodeManager.getYjzxYjxxIndex()).setTypes(basicsysCodeManager.getYjzxYjxxType()).setQuery(wqb).setSize(10 ).get(); SearchHit[] hits = searchResponse.getHits().getHits(); for (SearchHit hit : hits){ String content = hit.getSourceAsString(); System.out.println(content); }
http://www.itkeyword.com/doc/1009692843717298639/wrapperquerybuilder-aggs-query-throwing-query-malformed-exception
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 "{\"query\":{\"match_all\": {}},\"aggs\":{\"avg1\":{\"avg\":{\"field\":\"age\"}}}}" SearchSourceBuilder ssb = new SearchSourceBuilder(); String query ="{\"match_all\": {}}" ; WrapperQueryBuilder wrapQB = new WrapperQueryBuilder(query); ssb.query(wrapQB); AvgBuilder avgAgg = AggregationBuilders.avg("avg1" ).field("age" ); ssb.aggregation(avgAgg);
实现示例 略