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

关于Elasticsearch查询,有个问题请教

Elasticsearch | 作者 caobo | 发布于2019年12月04日 | 阅读数:2528

我使用的查询方式是用的restHighLevelClient的search方法进行查询。但是最近遇到一个问题:
封装查询条件的时候有两种方式。
第一种:
SearchRequest searchRequest = new SearchRequest().indices("re001matchbasematchres").types("doc");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); 
sourceBuilder.sort("matchTime", SortOrder.DESC); 
sourceBuilder.size(1); 
searchRequest.source(sourceBuilder);
response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
这是第一种,能正常查询到结果
第二种:
SearchRequest searchRequest = new SearchRequest().indices("re001matchbasematchres").types("doc");
searchRequest.source().sort("matchTime", SortOrder.DESC).size(1);
response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
这种在第二行的时候会报一个null。但是两种方法其实都是一样的,没有明白为什么会出现这种问题。附带上图片。第73行提示null
 
QQ图片20191204111414.png
已邀请:

josancpp

赞同来自:

这两个真的一样吗?
 
searchRequest.source()
searchRequest.source(sourceBuilder);
 
这两个怎么用的?
 
第二个,你直接读source()为null, 然后还去对它赋值,当然NPE

要回复问题请先登录注册