Spring Boot 集成spring-boot-starter-data-elasticsearch
第一步,添加Maven依赖
<!--es-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
第二步,配置yml
spring:
elasticsearch:
uris: http://localhost:9200
第三步,创建索引实体
@Document 指定索引名称
@Field 字段对应类型
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Document(indexName = "documents")
public class Document {
@Id
private String id;
@Field(type = FieldType.Text)
private String title;
@Field(type = FieldType.Text)
private String content;
// Getters and Setters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
第四步,创建仓库
import org.apache.hertzbeat.manager.pojo.dto.Document;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DocumentRepository extends ElasticsearchRepository<Document, String> {
// 自定义查询方法
List<Document> findByTitle(String title);
@Query("{\"match\": {\"name\": \"?0\"}}")
List<Document> findByName(String name);
}
第五步,调用
import lombok.extern.slf4j.Slf4j;
import org.apache.hertzbeat.manager.dao.master.DocumentRepository;
import org.apache.hertzbeat.manager.pojo.dto.Document;
import org.apache.hertzbeat.manager.service.DocumentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.Criteria;
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
import org.springframework.data.elasticsearch.core.query.Query;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;
@Slf4j
@Service
public class DocumentServiceImpl implements DocumentService {
@Autowired
private DocumentRepository documentRepository;
@Override
public Document saveDocument(Document document) {
return documentRepository.save(document);
}
@Override
public Iterable<Document> getAllDocuments() {
return documentRepository.findAll();
}
@Override
public Document getDocumentById(String id) {
return documentRepository.findById(id).orElse(null);
}
@Override
public List<Document> findByTitle(String title) {
return documentRepository.findByTitle(title);
}
@Override
public void deleteDocumentById(String id) {
documentRepository.deleteById(id);
}
}