Date,
Float,
Double,
Boolean,
Object,
Auto,
//自动判断字段类型
Nested,
//嵌套对象类型
Ip,
Attachment,
Keyword
//不会进行分词建立索引的类型
}
整合spring boot
1.pom文件
org.springframework.boot
spring-boot-starter-data-elasticsearch
2.application.yml
spring:
data:
elasticsearch:
repositories:
enabled: true
cluster-name: elasticsearch
cluster-nodes: 192.168.49.14:9300
3.config文件
否则会报错 java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
@Configuration
public class ElasticSearchConfig {
/**
-
防止netty的bug
-
java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
*/
@PostConstruct
void init() {
System.setProperty(“es.set.netty.runtime.available.processors”, “false”);
}
}
4.entity
@Document(indexName = “product”, type = “product”, shards = 1, replicas = 0)
public class Product {
@Id
private Long id;
/**
- 标题
*/
@Field(type = FieldType.Text, analyzer = “ik_max_word”)
private String title;
/**
- 分类
*/
@Field(type = FieldType.Keyword)
private String category;
/**
- 价格
*/
@Field(type = FieldType.Double)
private Double price;
/**
- 图片地址
*/
@Field(index = false, type = FieldType.Keyword)
private String images;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
}
6.继承ElasticsearchRepository
这就是以上说的Sping Data方式的数据操作
@Service
public interface ProductRepository extends ElasticsearchRepository<Product, Long> {
}
继承ElasticsearchRepository接口可以获得常用的数据操作方法
7.controller
@RestController
public class ProductController {
@Autowired
private ProductRepository productRepository;
/**
- 插入
*/
@RequestMapping(“/importProduct”)
public void importProduct() {
List list = new ArrayList();
// 产品1
Product product1 = new Product();
product1.setId(Long.valueOf(1));
product1.setTitle(“Haier/海尔 BCD-470WDPG十字对开门风冷变频一级节能家用官方冰箱”);
product1.setPrice(3699.00);
product1.setCategory(“冰箱”);
product1.setImages(“http://image.baidu.com/13123.jpg”);
// 产品2
Product product2 = new Product();
product2.setId(Long.valueOf(2));
product2.setTitle(“Panasonic/松下 NR-TC28WS1-N 风冷无霜家用抑菌三门小体积冰箱”);
product2.setPrice(5000.00);
product2.setCategory(“冰箱”);
product2.setImages(“http://image.baidu.com/13123.jpg”);
// 产品3
Product product3 = new Product();
product3.setId(Long.valueOf(3));
product3.setTitle(“Changhong/长虹 50D4P 50英寸超薄无边全面屏4K超高清智能电视机”);
product3.setPrice(2666.00);
product3.setCategory(“电视”);
product3.setImages(“http://image.baidu.com/13123.jpg”);
// 产品4
Product product4 = new Product();
product4.setId(Long.valueOf(4));
product4.setTitle(“创维40X6 40英寸高清电视机智能网络wifi平板液晶屏家用彩电32 43”);
product4.setPrice(1235.00);
product4.setCategory(“电视”);
product4.setImages(“http://image.baidu.com/13123.jpg”);
list.add(product1);
list.add(product2);
list.add(product3);
list.add(product4);
productRepository.saveAll(list);
}
/**
-
查询所有 通过自带方法
-
@return
*/
@RequestMapping(“/selectProductAll”)
public void selectProductAll() {
Iterable list = productRepository.findAll();
productRepository.deleteById(Long.valueOf(1));
for (Product product : list) {
System.out.println(product.getTitle());
}
}
/**
- 通过id删除
*/
@RequestMapping(“/deleteProduct”)
public void deleteProduct() {
productRepository.deleteById(Long.valueOf(1));
}
/**
- 删除全部
*/
@RequestMapping(“/deleteProductAll”)
public void deleteProductAll() {
productRepository.deleteAll();
}
}
调用以上接口 使用语句在kibana中验证
自定义方法
自定义方法的前提是我们需要继承ElasticsearchRepository接口,利用强大的Spring Data来实现。比如:你的方法名叫做:findByTitle,那么它就知道你是根据title查询,然后自动帮你完成,无需写实现类。
自定义方法命名约定
| 关键字 | 使用示例 | 等同于的ES查询 |
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0
| 关键字 | 使用示例 | 等同于的ES查询 |
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
[外链图片转存中…(img-qiFplDUe-1725594746433)]
[外链图片转存中…(img-5UTdnHa8-1725594746434)]
[外链图片转存中…(img-v90JHeGI-1725594746434)]
[外链图片转存中…(img-gFqlOrG1-1725594746435)]
加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0