elasticsearch实现增删改查操作restClient.performRequest
时间:2020-12-16 15:23:53
收藏:0
阅读:428
1、pom文件新增依赖
-
<dependency>
-
<groupId>org.elasticsearch.client</groupId>
-
<artifactId>elasticsearch-rest-client</artifactId>
-
<version>6.3.1</version>
-
</dependency>
-
-
<!--阿里 FastJson依赖-->
-
<dependency>
-
<groupId>com.alibaba</groupId>
-
<artifactId>fastjson</artifactId>
-
<version>1.2.39</version>
-
</dependency>
2、编写代码
-
import com.alibaba.fastjson.JSONObject;
-
import com.example.demo.model.novel;
-
import org.apache.http.HttpEntity;
-
import org.apache.http.HttpHost;
-
import org.apache.http.entity.ContentType;
-
import org.apache.http.nio.entity.NStringEntity;
-
import org.apache.http.util.EntityUtils;
-
import org.elasticsearch.client.Response;
-
import org.elasticsearch.client.RestClient;
-
import org.springframework.web.bind.annotation.GetMapping;
-
import org.springframework.web.bind.annotation.RestController;
-
import java.io.IOException;
-
import java.util.Collections;
-
import java.util.Date;
-
-
/**
-
* Created by Administrator on 2019/4/21.
-
*/
-
-
public class HelloController {
-
-
RestClient restClient = RestClient.builder(
-
new HttpHost("localhost", 9200, "http")).build();
-
-
/**
-
* 查看api信息
-
*
-
* @throws Exception
-
*/
-
-
public void bookApi() throws Exception {
-
String method = "GET";
-
String endpoint = "/book";
-
Response response = restClient.performRequest(method, endpoint);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
}
-
-
/**
-
* 新增索引
-
*
-
* @throws IOException
-
*/
-
-
public void addIndex() throws IOException {
-
String method = "PUT";
-
String endpoint = "/book";
-
Response response = restClient.performRequest(method, endpoint);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
}
-
-
/**
-
* 新增文档
-
*
-
* @throws Exception
-
*/
-
-
public void createDocument() throws Exception {
-
String method = "PUT";
-
String endpoint = "/book/novel/1"; // 索引:图书【DB】 类型:小说【table】 文档:【表里的数据】
-
novel testNovel = new novel();
-
testNovel.setName("三国演义");
-
testNovel.setWriter("张飞");
-
testNovel.setCount(10);
-
testNovel.setPublishDate(new Date());
-
String jsonStr = JSONObject.toJSONString(testNovel);
-
// JSON格式字符串
-
HttpEntity entity = new NStringEntity(jsonStr, ContentType.APPLICATION_JSON);
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
System.out.println("新增文档结束!!!");
-
// 返回结果:
-
// {"_index":"book","_type":"novel","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
-
}
-
-
/**
-
* 查询文档
-
*
-
* @throws Exception
-
*/
-
-
public void queryDocument() throws Exception {
-
String method = "GET";
-
String endpoint = "/book/novel/1";
-
Response response = restClient.performRequest(method, endpoint);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
System.out.println("查询文档结束!!!");
-
// 返回结果:
-
// {"_index":"book","_type":"novel","_id":"1","_version":1,"found":true,"_source":{"count":10,"name":"三国演义","publishDate":1555825698934,"writer":"张飞"}}
-
-
}
-
-
/**
-
* 查询所有数据
-
*
-
* @throws Exception
-
*/
-
-
public void queryAll() throws Exception {
-
String method = "POST";
-
String endpoint = "/book/novel/_search";
-
HttpEntity entity = new NStringEntity("{\n" +
-
" \"query\": {\n" +
-
" \"match_all\": {}\n" +
-
" }\n" +
-
"}", ContentType.APPLICATION_JSON);
-
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
System.out.println("查询所有数据:queryAll !!!");
-
// 返回结果
-
// {"took":140,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"book","_type":"novel","_id":"1","_score":1.0,"_source":{"count":10,"name":"三国演义","publishDate":1555825698934,"writer":"张飞"}}]}}
-
}
-
-
/**
-
* 根据ID获取
-
*
-
* @throws Exception
-
*/
-
-
public void queryByField() throws Exception {
-
String method = "POST";
-
String endpoint = "/book/novel/_search";
-
HttpEntity entity = new NStringEntity("{\n" +
-
" \"query\": {\n" +
-
" \"match\": {\n" +
-
" \"name\": \"三国\"\n" +
-
" }\n" +
-
" }\n" +
-
"}", ContentType.APPLICATION_JSON);
-
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
// 返回结果
-
// {"took":3,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":0.5753642,"hits":[{"_index":"book","_type":"novel","_id":"1","_score":0.5753642,"_source":{"count":10,"name":"三国演义","publishDate":1555825698934,"writer":"张飞"}}]}}
-
}
-
-
/**
-
* 更新数据
-
*
-
* @throws Exception
-
*/
-
-
public void updateDocument() throws Exception {
-
// doc_as_upsert :使用doc_as_upsert可以在文档不存在的时候,把doc中的内容插入到文档中
-
String method = "POST";
-
String endpoint = "/book/novel/1/_update";
-
HttpEntity entity = new NStringEntity("{\n" +
-
" \"doc\": {\n" +
-
" \"name\":\"三国演义修改哈哈哈\"\n" +
-
" }\n" +
-
"}", ContentType.APPLICATION_JSON);
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
}
-
-
/**
-
* 删除数据
-
*
-
* @throws Exception
-
*/
-
-
public void deleteDocument() throws Exception {
-
String method = "DELETE";
-
String endpoint = "/book/novel/1";
-
HttpEntity entity = new NStringEntity("", ContentType.APPLICATION_JSON);
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
// 返回结果
-
// {"_index":"book","_type":"novel","_id":"1","_version":5,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":4,"_primary_term":1}
-
}
-
-
/**
-
* 按条件删除数据
-
*
-
* @throws Exception
-
*/
-
-
public void deleteDocumentByCondition() throws Exception {
-
String method = "DELETE";
-
String endpoint = "/book/novel/_delete_by_query ";
-
/* {
-
"query":{
-
"term":{
-
"author":"test2"
-
}
-
}
-
}*/
-
-
/* HttpEntity entity = new NStringEntity("{\n" +
-
" \"query\": {\n" +
-
" \"term\":\"三国演义修改哈哈哈\"\n" +
-
" }\n" +
-
"}", ContentType.APPLICATION_JSON);*/
-
Response response = restClient.performRequest(method, endpoint, Collections.emptyMap(), entity);
-
System.out.println(EntityUtils.toString(response.getEntity()));
-
}
-
}
补充:
1、使用doc_as_upsert
可以在文档不存在的时候,把doc中的内容插入到文档中。
-
curl -XPOST ‘localhost:9200/test/type1/1/_update‘ -d ‘{
-
"doc" : {
-
"name" : "new_name"
-
},
-
"doc_as_upsert" : true
-
}‘
2、retry_on_conflict
-
当执行索引和更新的时候,有可能另一个进程正在执行更新。这个时候就会造成冲突,
-
这个参数就是用于定义当遇到冲突时,再过多长时间执行操作。
原文:https://www.cnblogs.com/QuickSlow/p/14143472.html
评论(0)