提交 71ac34a3 编写于 作者: FelixHPP's avatar FelixHPP

feat: 统一查询中的type名称, 去掉查询中type 占位符, 统一es6.x 和7.x APi

上级 929cb21c
......@@ -208,6 +208,7 @@ public class EasyEsService extends AbstractService {
/**
* scroll 查询, 用于批量导出
* 对于用户高并发访问的场景,不推荐用这种方式,scroll 更适用于批处理类的后台任务。
* eg: scroll(String index, QueryBuilder query, (SearchHitsFunction<SearchHits, Map>) func{
* for (SearchHit searchHit : searchHits) {
* <p>
......@@ -216,50 +217,50 @@ public class EasyEsService extends AbstractService {
* return map
* })
*/
public void scroll(String index, QueryBuilder query, SearchHitsFunction func) throws IOException {
public void scroll(String index, QueryBuilder query, Consumer<SearchResponse> consumer) throws IOException {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//设定每次返回多少条数据
searchSourceBuilder.size(1000);
//返回字段信息
// searchSourceBuilder.fetchSource(new String[]{"id", "x_dip","i_dport"}, new String[]{});
searchSourceBuilder.query(query);
scroll(index, searchSourceBuilder, func);
scroll(index, searchSourceBuilder, consumer);
}
public void scroll(String index, SearchSourceBuilder searchSourceBuilder, SearchHitsFunction func) throws IOException {
/**
* 滚动查询
* 对于用户高并发访问的场景,不推荐用这种方式,scroll 更适用于批处理类的后台任务。
* @param index
* @param searchSourceBuilder
* @param consumer
* @throws IOException
*/
public void scroll(String index, SearchSourceBuilder searchSourceBuilder, Consumer<SearchResponse> consumer) throws IOException {
//设定滚动时间间隔
final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(60L));
SearchRequest searchRequest = new SearchRequest(index);//索引库
searchRequest.types(DOC_TYPE);//索引表
searchRequest.scroll(scroll);
// SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//设定每次返回多少条数据
searchSourceBuilder.size(1000);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
consumer.accept(searchResponse);
String scrollId = searchResponse.getScrollId();
SearchHit[] searchHits = searchResponse.getHits().getHits();
System.out.println("-----" + searchHits.length + "-----");
for (SearchHit searchHit : searchHits) {
func.execute(searchHit);
}
//遍历搜索命中的数据,直到没有数据
while (searchHits != null && searchHits.length > 0) {
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(scroll);
searchResponse = restHighLevelClient.scroll(scrollRequest, RequestOptions.DEFAULT);
consumer.accept(searchResponse);
scrollId = searchResponse.getScrollId();
searchHits = searchResponse.getHits().getHits();
if (searchHits != null && searchHits.length > 0) {
System.out.println("-----" + searchHits.length + "-----");
for (SearchHit searchHit : searchHits) {
func.execute(searchHit);
}
}
}
//清除滚屏
......@@ -277,6 +278,7 @@ public class EasyEsService extends AbstractService {
/**
* searchAfter 分页查询
* search after因为每一页的数据依赖于上一页最后一条数据,所以无法跳页请求
* 需要排序- 需要排序,官方(5.6版本)推荐使用 _uid 作为排序字段和全局唯一值(
* 注:不同版本的ES,官方文档有变动,请参考对应版本的文档。
* 比如,7.x版本建议拷贝_id字段值到另外一个支持doc value的字段,用于作为排序字段);
......@@ -440,7 +442,7 @@ public class EasyEsService extends AbstractService {
* @return 查询好的SearchHit数组
* @throws IOException es连接异常
*/
public SearchHit[] queryPage(String index, Integer form, Integer size, String name, String value) throws IOException {
public SearchHit[] searchPage(String index, Integer form, Integer size, String name, String value) throws IOException {
SearchRequest searchRequest = new SearchRequest(index);
//构建搜索条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
......
......@@ -3,7 +3,10 @@ package indi.felix.easy.core.elastic.client;
import indi.felix.easy.core.elastic.EasyEs;
import javafx.util.Pair;
import junit.framework.TestCase;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -29,4 +32,58 @@ public class EasyEsServiceTest extends TestCase {
System.out.println(res.size());
}
public void testSearchResponse() {
}
public void testSearch() {
}
public void testTestSearch() {
}
public void testTestSearchResponse() {
}
public void testTestSearch1() {
}
public void testScroll() throws IOException {
EasyEs easyEs = new EasyEs("localhost:9200");
TermQueryBuilder termQueryBuilder = new TermQueryBuilder("pa_sex", "女");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(termQueryBuilder);
easyEs.search().scroll("csmsearch", searchSourceBuilder, searchHit -> {
System.out.println("查询" + searchHit.getHits().getHits().length);
});
easyEs.search().scroll("csmsearch", searchSourceBuilder, searchHit -> {
System.out.println("查询" + searchHit.getHits().getHits().length);
});
}
public void testSearchResponsePage() {
}
public void testSearchForResponse() {
}
public void testTestSearchForResponse() {
}
public void testTestSearchForResponse1() {
}
public void testSearchForHit() {
EasyEs easyEs = new EasyEs("localhost:9200");
}
public void testTestSearchForHit() {
}
public void testQueryPage() {
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册