|
楼主
发表于 2017-10-15 23:39:20
|
查看: 1832 |
回复: 0
一、maven配置:- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>transport</artifactId>
- <version>5.6.3</version>
- </dependency>
-
复制代码
<dependency>
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.2.17</version>
</dependency>
二、获取连接
@Configuration
public class MyConfig {
@Bean
TransportClient client() throws UnknownHostException{
InetSocketTransportAddress node=new InetSocketTransportAddress(
Inet4Address.getByName("localhost"),
9300
);
Settings settings=Settings.builder()
.put("cluster.name","liuzhengguo")
.build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(node);
return client;
}
}
三、CRUD操作
/**
* 根据ID获取数据
*/
public String browse(){
GetResponse result = this.client.prepareGet("people", "man", ""+id).get();
if (result.isExists()){
String s= Json.encode(result.getSource());
JSONObject json=new JSONObject(result.getSource());
s=json.toString();
setContent(s);
}else{
setContent("没找到数据");
}
return "content";
}
/**
* 增加数据
*/
public String add(){
try {
XContentBuilder content=XContentFactory.jsonBuilder()
.startObject()
.field("name",name)
.field("age",age)
.field("date",date)
.field("country",country)
.endObject();
IndexResponse result=this.client.prepareIndex("people", "man")
.setSource(content).get();
String s=result.getId();
setContent(s);
} catch (IOException e) {
e.printStackTrace();
setContent("内部错误");
}
return "content";
}
/**
* 根据ID删除数据
* @return
*/
public String delete(){
//框架提供的ID的数字类型,因此需要重新获取id
String idstr=request.getParameter("id");
DeleteResponse result = this.client.prepareDelete("people","man",idstr).get();
String s=result.getResult().toString();
setContent(s);
return "content";
}
/**
* 根据ID修改数据
* @return
*/
public String update(){
String idstr=request.getParameter("id");
UpdateRequest update= new UpdateRequest("people", "man", idstr);
try {
XContentBuilder content=XContentFactory.jsonBuilder().startObject();
if (date!=null){
content.field("date",date);
}
if (name!=null){
content.field("name",name);
}
if (age!=null){
content.field("age",age);
}
if (country!=null){
content.field("country",country);
}
content.endObject();
update.doc(content);
UpdateResponse result = this.client.update(update).get();
setContent(result.getResult().toString());
} catch (IOException e) {
e.printStackTrace();
setContent("内部错误");
} catch (InterruptedException e) {
e.printStackTrace();
setContent(e.getMessage());
} catch (ExecutionException e) {
e.printStackTrace();
setContent(e.getMessage());
}
return "content";
}
/**
* 根据name,country,lt_age,gt_age查询数据
* @return
*/
public String query(){
BoolQueryBuilder boolQuery=QueryBuilders.boolQuery();
if (name!=null){
boolQuery.must(QueryBuilders.matchQuery("name", name));
}
if (country!=null){
boolQuery.must(QueryBuilders.matchQuery("country", country));
}
RangeQueryBuilder rangeQuery=QueryBuilders.rangeQuery("age");
rangeQuery.from(gt_age==null?0:gt_age);
if (lt_age!=null && lt_age>0){
rangeQuery.to(lt_age);
}
boolQuery.filter(rangeQuery);
SearchRequestBuilder builder = this.client.prepareSearch("people")
.setTypes("man")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(boolQuery)
.setFrom(0)
.setSize(100);
//可查看请求体的格式
System.out.println(builder);
SearchResponse response = builder.get();
List<Map<String,Object>> result=new ArrayList<Map<String,Object>>();
for(SearchHit hit:response.getHits()){
result.add(hit.getSource());
}
JSONArray jsonArr=new JSONArray(result);
setContent(jsonArr.toString());
return "content";
}
|
|