Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
easy-es
easy-es
提交
71ac34a3
E
easy-es
项目概览
easy-es
/
easy-es
通知
96
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
easy-es
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
71ac34a3
编写于
12月 01, 2021
作者:
FelixHPP
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 统一查询中的type名称, 去掉查询中type 占位符, 统一es6.x 和7.x APi
上级
929cb21c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
77 addition
and
18 deletion
+77
-18
easy-es-core/src/main/java/indi/felix/easy/core/elastic/client/EasyEsService.java
...va/indi/felix/easy/core/elastic/client/EasyEsService.java
+20
-18
easy-es-core/src/test/java/indi/felix/easy/core/elastic/client/EasyEsServiceTest.java
...ndi/felix/easy/core/elastic/client/EasyEsServiceTest.java
+57
-0
未找到文件。
easy-es-core/src/main/java/indi/felix/easy/core/elastic/client/EasyEsService.java
浏览文件 @
71ac34a3
...
...
@@ -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
(
1
L
));
final
Scroll
scroll
=
new
Scroll
(
TimeValue
.
timeValueMinutes
(
60
L
));
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
[]
query
Page
(
String
index
,
Integer
form
,
Integer
size
,
String
name
,
String
value
)
throws
IOException
{
public
SearchHit
[]
search
Page
(
String
index
,
Integer
form
,
Integer
size
,
String
name
,
String
value
)
throws
IOException
{
SearchRequest
searchRequest
=
new
SearchRequest
(
index
);
//构建搜索条件
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
...
...
easy-es-core/src/test/java/indi/felix/easy/core/elastic/client/EasyEsServiceTest.java
浏览文件 @
71ac34a3
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录