我用的是RestHighLevelClient方法连接es,我查询的部分核心代码
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 查询条件
// 创建BoolQueryBuilder对象
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); // 匹配索引下的所有字段分词查询
QueryStringQueryBuilder queryBuilder = QueryBuilders
.queryStringQuery(inputValue.getValue());
// 配置hanlp分词器
queryBuilder.analyzer("hanlp-index"); queryBuilder.useDisMax(true); // 子boolQueryBuilder条件条件,用来表示查询条件or的关系
BoolQueryBuilder childBoolQueryBuilder = new BoolQueryBuilder()
.should(queryBuilder);
// 添加查询条件到boolQueryBuilder中
boolQueryBuilder.must(childBoolQueryBuilder); sourceBuilder.query(boolQueryBuilder);
// 每页多少条数据
sourceBuilder.size(10000);
// 加入高亮显示
// sourceBuilder.highlighter(highlightBuilder); // 将请求体加入到请求中
searchRequest.source(sourceBuilder);
//设置超时时间
searchRequest.scroll(TimeValue.timeValueMinutes(1L)); // 3、发送请求
SearchResponse searchResponse; searchResponse = esc.client.search(searchRequest);
// System.out.println(searchResponse.toString());
// 处理搜索命中文档结果
SearchHits hits = searchResponse.getHits();
// 检索命中数
long totalHits = hits.getTotalHits();
float maxScore = hits.getMaxScore();
//获取scrollID
String scrollId = searchResponse.getScrollId();
System.out.println("scrollId--->"+scrollId);
SearchHit[] searchHits = hits.getHits();
//获取数据匹配总数,
for (SearchHit hit : searchHits) {
// 取_source字段值
String sourceAsString = hit.getSourceAsString(); // 取成json串
//sourList.add(sourceAsString);
//sourList.add(scrollId);
}
我在这里已经获取了匹配数据的总数,我想每次拿20条,点击下一页是,在查询出后20条
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 查询条件
// 创建BoolQueryBuilder对象
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); // 匹配索引下的所有字段分词查询
QueryStringQueryBuilder queryBuilder = QueryBuilders
.queryStringQuery(inputValue.getValue());
// 配置hanlp分词器
queryBuilder.analyzer("hanlp-index"); queryBuilder.useDisMax(true); // 子boolQueryBuilder条件条件,用来表示查询条件or的关系
BoolQueryBuilder childBoolQueryBuilder = new BoolQueryBuilder()
.should(queryBuilder);
// 添加查询条件到boolQueryBuilder中
boolQueryBuilder.must(childBoolQueryBuilder); sourceBuilder.query(boolQueryBuilder);
// 每页多少条数据
sourceBuilder.size(10000);
// 加入高亮显示
// sourceBuilder.highlighter(highlightBuilder); // 将请求体加入到请求中
searchRequest.source(sourceBuilder);
//设置超时时间
searchRequest.scroll(TimeValue.timeValueMinutes(1L)); // 3、发送请求
SearchResponse searchResponse; searchResponse = esc.client.search(searchRequest);
// System.out.println(searchResponse.toString());
// 处理搜索命中文档结果
SearchHits hits = searchResponse.getHits();
// 检索命中数
long totalHits = hits.getTotalHits();
float maxScore = hits.getMaxScore();
//获取scrollID
String scrollId = searchResponse.getScrollId();
System.out.println("scrollId--->"+scrollId);
SearchHit[] searchHits = hits.getHits();
//获取数据匹配总数,
for (SearchHit hit : searchHits) {
// 取_source字段值
String sourceAsString = hit.getSourceAsString(); // 取成json串
//sourList.add(sourceAsString);
//sourList.add(scrollId);
}
我在这里已经获取了匹配数据的总数,我想每次拿20条,点击下一页是,在查询出后20条
解决方案 »
- [J2EE源码问题] 请大家来说说一个过滤器完整的代码运行流程
- 用cxf做webserver是生成自己指定的报文
- java语音技术 关于javax.speech包的问题
- 求一JSP 多级联动列子
- EJB如何打包
- org.hibernate.Query.executeQuery()执行update语句时如何插入null?
- hibernate简单问题:高分相送,在线等待~~~~~~~~~
- 类的包容
- 请教JBoss_Tomcat如何作为插件加到eclipse中,用文档资料吗?
- HashMap转成JSONObject的问题
- 为什么我本地测试就可以运行,服务器上一执行方法,就报400.....
- 大佬们走过路过别错过啊,centos7安装rabbitMq 启动服务不了!!!
for (SearchHit hit:hits.getHits()) {
if(limit==page){
break;
}
String hitString = hit.getSourceAsString();
list.add(hitString);
// 在这里取索引1-20
limit++; }