项目搭建ElasticSearch搜索引擎
- 引pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
- 改yml
spring:
elasticsearch:
uris: http://localhost:9200
- 举例运用es
@Document(indexName = “shopping”) 意思是,这个对象存储是存到shopping索引里的,如果没有这个索引就对这个索引进行创建
@Id ElasticSearch的id标识,如果不指定,es会自动给你生成一个唯一的id
@Field(type = FieldType.Text) ElasticSearch的类型指定的一个注解
text 类型的是会被用来作为分词->倒排索引的一个字段
keyword 类型是不允许被分词的,只允许完整的查找
index : false 是不允许通过这个字段查找的意思
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Document(indexName = "shopping")
public class Product {
//必须有 id,这里的 id 是全局唯一的标识,等同于 es 中的"_id"
@Id
private Long id;//商品唯一标识
/**
* type : 字段数据类型
* analyzer : 分词器类型
* index : 是否索引(默认:true)
* Keyword : 短语,不进行分词
*/
@Field(type = FieldType.Text)
private String title;//商品名称
@Field(type = FieldType.Keyword)
private String category;//分类名称
@Field(type = FieldType.Double)
private Double price;//商品价格
@Field(type = FieldType.Keyword, index = false)
private String images;//图片地址
}
-
要创建 ProductDao 以访问es
ProductDao extends ElasticsearchRepository<Product, Long> 这个Long是由你的 id类型决定的
@Repository
public interface ProductDao extends ElasticsearchRepository<Product, Long> {
}
- 测试例子
@Autowired
private ProductDao productDao;
/**
* 新增
*/
@Test
public void save(){
Product product = new Product();
product.setId(8L);
product.setTitle("华为手机");
product.setCategory("手机");
product.setPrice(6999.0);
product.setImages("http://www.atguigu/iphone.jpg");
productDao.save(product);
}