我使用的查询方式是用的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
封装查询条件的时候有两种方式。
第一种:
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
1 个回复
josancpp
赞同来自:
searchRequest.source()
searchRequest.source(sourceBuilder);
这两个怎么用的?
第二个,你直接读source()为null, 然后还去对它赋值,当然NPE