三人行必有我师

关于HighLevelClient多条件查询的问题。

Elasticsearch | 作者 solike8 | 发布于2020年04月26日 | 阅读数:4447

代码如下
屏幕截图.png

 
当我在封装多个source的时候,发现每次都会返回第一个source的查询内容,第二个source都会被无视。是restclient不支持这样查询吗,多条件查询只能用聚合?
已邀请:

tacsklet - 公司有用到es

赞同来自: solike8

TCP通信的api是怎么写的呢,多个条件应该是用bool查询吧,或者你的意思是MultiSearchRequest ?

God_lockin

赞同来自: solike8

SearchRequest 的 source 方法是这样写的
public SearchRequest source(SearchSourceBuilder sourceBuilder) {
this.source = (SearchSourceBuilder)Objects.requireNonNull(sourceBuilder, "source must not be null");
return this;
}
那很明显他不能多次调用source方法,否则会造成sourceBuilder的覆盖
 
如果你有多个条件需要bool连接的话,可以考虑用一个SearchSourceBuilder,然后通过同一个query里加入不同的条件构建的方式

solike8 - 95后,挨打男

赞同来自:

在此之前,我试过用TCP通信的api是可以正确出现查询结果的。

solike8 - 95后,挨打男

赞同来自:

现在的解决方法是用 filter。

要回复问题请先登录注册