想要在代碼里使用es 的 query dsl 語(yǔ)句。
因?yàn)閷懞昧?query dsl 語(yǔ)句,再用程序翻譯 挺麻煩的。
在官網(wǎng)找到了 wrapper query 剛好可以滿足,將 json 串作為 query 的參數(shù)蚜点。
https://www.elastic.co/guide/en/elasticsearch/reference/current/specialized-queries.html
wrapper query
A query that accepts other queries as json or yaml string.
用代碼測(cè)試下
@Test
public void testtest() {
SearchRequestBuilder searchRequestBuilder;
String query = " { \"query\":{\"match_all\" : {\"boost\" : 1.0}}}";
WrapperQueryBuilder wrapperQueryBuilder = QueryBuilders.wrapperQuery(query);
searchRequestBuilder = elasticsearchTemplate.getClient().prepareSearch("test_customer");
searchRequestBuilder.setQuery(QueryBuilders.wrapperQuery(query));
SearchResponse response = searchRequestBuilder.execute().actionGet();
}
報(bào)了異常
ParsingException[no [query] registered for [query]
在官網(wǎng)找到了答案
https://discuss.elastic.co/t/parsingexception-in-elastic-5-0-0/64626
有人也遇到了同樣的問(wèn)題。
image.png
image.png
原來(lái)需要這樣寫
String query = "{"match_all":{}}";
因?yàn)镼ueryBuilders 本身就會(huì)包裝上 query吵取。
參考地址
https://discuss.elastic.co/t/parsingexception-in-elastic-5-0-0/64626