Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
武汉红喜
whatsmars
提交
656581f9
W
whatsmars
项目概览
武汉红喜
/
whatsmars
通知
3
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
whatsmars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
656581f9
编写于
10月 09, 2019
作者:
武汉红喜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RestClient使用
上级
e334a254
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
54 addition
and
3 deletion
+54
-3
whatsmars-elasticsearch/pom.xml
whatsmars-elasticsearch/pom.xml
+4
-0
whatsmars-elasticsearch/src/main/java/org/hongxi/whatsmars/elasticsearch/SimpleController.java
.../org/hongxi/whatsmars/elasticsearch/SimpleController.java
+50
-3
未找到文件。
whatsmars-elasticsearch/pom.xml
浏览文件 @
656581f9
...
...
@@ -23,6 +23,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-elasticsearch
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
whatsmars-elasticsearch/src/main/java/org/hongxi/whatsmars/elasticsearch/SimpleController.java
浏览文件 @
656581f9
package
org.hongxi.whatsmars.elasticsearch
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.http.util.EntityUtils
;
import
org.elasticsearch.client.Request
;
import
org.elasticsearch.client.Response
;
import
org.elasticsearch.client.RestClient
;
import
org.elasticsearch.index.query.QueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
;
import
org.springframework.
web.bind.annotation.PathVariable
;
import
org.springframework.
web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.
RestController
;
import
org.springframework.
data.elasticsearch.core.query.NativeSearchQueryBuilder
;
import
org.springframework.
data.elasticsearch.core.query.SearchQuery
;
import
org.springframework.web.bind.annotation.
*
;
import
java.io.IOException
;
import
java.util.List
;
/**
...
...
@@ -21,11 +30,25 @@ public class SimpleController {
@Autowired
private
CustomerRepository
repository
;
@Autowired
private
RestClient
restClient
;
@RequestMapping
(
"/indexExists/{indexName}"
)
public
Boolean
indexExists
(
@PathVariable
String
indexName
)
{
return
elasticsearchTemplate
.
indexExists
(
indexName
);
}
@RequestMapping
(
"/search/{indices}"
)
public
List
<
Customer
>
query
(
@PathVariable
String
indices
)
{
QueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
()
.
must
(
QueryBuilders
.
matchQuery
(
"firstName"
,
"Alice"
));
SearchQuery
searchQuery
=
new
NativeSearchQueryBuilder
()
.
withIndices
(
indices
)
.
withQuery
(
queryBuilder
)
.
build
();
return
elasticsearchTemplate
.
queryForList
(
searchQuery
,
Customer
.
class
);
}
@RequestMapping
(
"/save"
)
public
String
testEsRepo
()
{
saveCustomers
();
...
...
@@ -47,6 +70,30 @@ public class SimpleController {
return
this
.
repository
.
findByLastName
(
"Smith"
);
}
@PostMapping
(
"/{indices}/_search"
)
public
Object
search
(
@PathVariable
String
indices
,
@RequestBody
(
required
=
false
)
JSONObject
query
)
{
StringBuilder
endpoint
=
new
StringBuilder
(
"/"
).
append
(
indices
).
append
(
"/_search"
);
Request
request
=
new
Request
(
"POST"
,
endpoint
.
toString
());
request
.
addParameter
(
"rest_total_hits_as_int"
,
"true"
);
request
.
addParameter
(
"ignore_throttled"
,
"true"
);
try
{
if
(
query
!=
null
)
{
request
.
setJsonEntity
(
query
.
toString
());
}
Response
response
=
restClient
.
performRequest
(
request
);
return
responseToJSONObject
(
response
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
"error"
;
}
}
private
JSONObject
responseToJSONObject
(
Response
response
)
throws
IOException
{
String
body
=
EntityUtils
.
toString
(
response
.
getEntity
());
return
JSON
.
parseObject
(
body
);
}
private
void
saveCustomers
()
{
this
.
repository
.
deleteAll
();
this
.
repository
.
save
(
new
Customer
(
"Alice"
,
"Smith"
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录