一丶导入依赖
<!--SpringBoot-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
二丶配置yml(端口号默认9200,不做更改的话可以不配置)
spring:
elasticsearch:
rest:
uris: http://localhost:9200
三丶配置启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ESApplication {
public static void main(String[] args) {
SpringApplication.run(ESApplication.class, args);
}
}
四丶编写document对象
/**
* @Document标记该对象是ES的文档对象
* indexName 索引库
* type 类型
*/
@Document(indexName = "order",type = "_doc")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderDoc {
/**
* 标记为文档ID,该ID的值会作为document的id值
*/
@Id
private Long id;
/**
* Text需要分词
* 按ik_max_word分词建立倒排索引
* 查询按ik_max_word查询
*/
@Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
private String goods;
@Field(type = FieldType.Integer)
private Integer count;
@Field(type = FieldType.Date)
@DateTimeFormat
private Date createTime;
/**
* ES没有BigDecimal数据类型用Doubl
*/
@Field(type = FieldType.Double)
private BigDecimal price;
}
五丶实现ElasticsearchRepository接口(ElasticsearchRepository<文档对象,文档对象中id的类型>)
@Repository
public interface OrderRepository extends ElasticsearchRepository<OrderDoc,Long> {
}
六丶测试类
ElasticsearchRestTemplate 操作ES的template模板
OrderRepository 用于调用repository内置方法进行CRUD
@Autowired
private ElasticsearchRestTemplate template;
@Autowired
private OrderRepository orderRepository;
@Test
public void test(){
//创建索引
template.createIndex(OrderDoc.class);
//创建映射
template.putMapping(OrderDoc.class);
}
@Test
public void testAdd() {
orderRepository.save(new OrderDoc(1L,"真爱坤",
10,new Date(),new BigDecimal("100.00")));
}
@Test
public void testGet() {
System.out.println(orderRepository.findById(1L));
}
/**
* 修改和添加是同一个方法,Id存在就修改
*/
@Test
public void testUpdate() {
orderRepository.save(new OrderDoc(1L,"小黑子",10,
new Date(),new BigDecimal("250.00")));
}
@Test
public void testDelete() {
orderRepository.deleteById(1L);
}