前言
- 在没有elasticsearch客户端的情况下SpringBoot是没有办法链接的,点击前往配置客户端
1.SpringBoot项目导入依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
2.编写ElasticSearchConfig配置类
@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient () {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http")));
return client;
}
}
3.创建索引
@Autowired
@Qualifier("restHighLevelClient")
private RestHighLevelClient client;
@Test
void contextLoads() throws IOException{
CreateIndexRequest request = new CreateIndexRequest("huyi_index");
CreateIndexResponse createIndexResponse = client.indices().create(request,RequestOptions.DEFAULT);
System.err.println(createIndexResponse.toString());
}
4.删除索引
@Test
void delExistIndex() throws IOException{
DeleteIndexRequest delRequest = new DeleteIndexRequest("huyi_index");
AcknowledgedResponse delet = client.indices().delete(delRequest,RequestOptions.DEFAULT);
System.err.println(delet);
}
5.实体类
package com.huyi.demo.pojo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Proxy;
@Entity
@Table(name="DOCUMENT")
@Proxy(lazy=false)
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long documentId;
private String titles;
private String contents;
public long getDocumentId() {
return documentId;
}
public void setDocumentId(long documentId) {
this.documentId = documentId;
}
public String getTitles() {
return titles;
}
public void setTitles(String titles) {
this.titles = titles;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public Document(long documentId, String titles, String contents) {
this.documentId = documentId;
this.titles = titles;
this.contents = contents;
}
public Document() {
}
}
6.添加文档
@Test
void testAddDocument() throws IOException {
IndexRequest request = new IndexRequest("huyi_index");
Document document = new Document();
document.setDocumentId(1);
document.setTitles("hulitest");
document.setContents("Contents");
}
request.id("Did"+document.getDocumentId());
request.timeout("1s");
request.source(JSON.toJSONString(document),XContentType.JSON);
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
System.err.println(indexResponse.toString());
System.err.println(indexResponse.status());
}
@Test
void testAddDocument() throws IOException {
List<Document> documents = new ArrayList<Document>();
IndexRequest request = new IndexRequest("huyi_index");
for(int i=0;i<18;i++) {
Document document = new Document();
document.setDocumentId(i+1);
document.setTitles("hulitest"+(i+1));
document.setContents("Contents"+i);
documents.add(document);
}
for(Document document:documents) {
request.id("Did"+document.getDocumentId());
request.timeout("1s");
request.source(JSON.toJSONString(document),XContentType.JSON);
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
System.err.println(indexResponse.toString());
System.err.println(indexResponse.status());
}
}
@Test
void batchAddDocument() throws IOException{
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
List<Document> documents = new ArrayList<Document>();
for(int i=19;i<31;i++) {
Document document = new Document();
document.setDocumentId(i);
document.setTitles("titles"+i);
document.setContents("Content"+i);
documents.add(document);
}
for(Document document:documents) {
bulkRequest.add(
new IndexRequest("huyi_index")
.id("Did"+document.getDocumentId())
.source(JSON.toJSONString(document),XContentType.JSON)
);
}
client.bulk(bulkRequest, RequestOptions.DEFAULT);
}
7.读取文档
@Test
void getDocument() throws IOException {
GetRequest getRequest=new GetRequest("huyi_index","1");
GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);
System.err.println(getResponse.getSourceAsString());
}
@Test
void batchDocument() throws IOException{
SearchRequest searchRequest=new SearchRequest(ESconst.HUYI_INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
MatchAllQueryBuilder matchAllQuery= QueryBuilders.matchAllQuery();
searchSourceBuilder.query(matchAllQuery);
searchSourceBuilder.timeout(new TimeValue(10,TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder);
SearchResponse search= client.search(searchRequest,RequestOptions.DEFAULT);
System.err.println(JSON.toJSONString(search.getHits()));
8. 删除文档
@Test
void deletDocument() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("huyi_index","1");
deleteRequest.timeout("1s");
client.delete(deleteRequest,RequestOptions.DEFAULT);
}
9.更新文档
@Test
void upDocument() throws IOException {
UpdateRequest updateRequest = new UpdateRequest("huyi_index","1");
updateRequest.timeout("1s");
Document document = new Document();
document.setDocumentId(19);
document.setTitles("huyitest19");
document.setContents("Content19");
updateRequest.doc(JSON.toJSONString(document),XContentType.JSON);
UpdateResponse update= client.update(updateRequest,RequestOptions.DEFAULT);
System.err.println(update.status());
}
10.获取文档 判断是否存在
@Test
void getIsDocument() throws IOException {
GetRequest getRequest=new GetRequest("huyi_index","1");
getRequest.fetchSourceContext(new FetchSourceContext(false));
getRequest.storedFields("_none_");
boolean exists= client.exists(getRequest,RequestOptions.DEFAULT);
System.err.println(exists);
}