Q:有两个人掉到陷阱里了,死的人叫死人,活人叫什么?

elasticsearch如何用QueryBuilder自己拼接查询语句已json方式传入

Elasticsearch | 作者 w565039616 | 发布于2019年02月11日 | 阅读数:8038

elasticsearch如何用QueryBuilder自己拼接查询语句已json方式传入
已邀请:

kevinscott - 小白

赞同来自: rochy zhuzh2019

看看 Wrapper Query 呢:


A Query builder which allows building a query given JSON string or binary data provided as input. This is useful when you want to use the Java Builder API but still have JSON query strings at hand that you want to combine with other query builders.


QueryBuilders.wrapperQuery("{\"term\": {\"field\":\"value\"}}")

JackGe

赞同来自:

你是不是要直接传入dsl语句的方式,如下
client().prepareSearch().setQuery("{ \"term\" : { \"field1\" : \"value1_1\" }}")
或者自己提交http POST请求传入dsl语句的方式
 

w565039616 - 90后it男

赞同来自:

我就是希望自己传入dsl 的查询语句
 

yxy

赞同来自:

spring boot 使用的elasticSearch6.4.3的包。
json为自己拼接的查询语句
TransportClient client = new PreBuiltTransportClient(Settings.builder().put("cluster.name", es集群名称).build())
.addTransportAddress(new TransportAddress(InetAddress.getByName(es的IP), Integer.parseInt(es的Port(一般为9300这个))));
 
WrapperQueryBuilder wqb = QueryBuilders.wrapperQuery(json); 
 
SearchResponse searchResponse = client.prepareSearch(索引) .setTypes(索引映射).setQuery(wqb).get();



注意:kibana中的查询为:
{
"query": {
"match": {
"title": {
"query": "小米手机"
}
}
}
}

 
但是拼接json时需要去掉第二行的query,如下
{
"match": {
"title": {
"query": "小米手机"
}
}
}

要回复问题请先登录注册