springboot集成es插入和查询的简单使用示例详解
第一步:引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>第二步:配置yml文件,在spring下面加上这个
elasticsearch:
rest:
# ip是服务器ip地址
uris: http://127.0.0.1:9200然后启动项目,看到出现这个就是成功了

第三步: 创建一个常量类,用于存储我们一会儿要用到的名称
public class OrderEs {
public static final String INDEX_NAME = "order_index";
public static final String ID = "id";
public static final String ORDER_NO = "order_no";
public static final String ORDER_BUYER = "order_buyer";
public static final String ORDER_PHONE = "order_phone";
public static final String REAL_PAY = "real_pay";
public static final String ACCOUNT = "account";
}第四步:创建Es实体类,注意要加上@Document注解
@Document(indexName = OrderEs.INDEX_NAME)
@Data
public class OrderEsPO {
@Id
@Field(type = FieldType.Keyword,name = OrderEs.ID)
private String id;
@Field(type = FieldType.Keyword,name = OrderEs.ORDER_NO)
private String orderNo;
@Field(type = FieldType.Keyword,name = OrderEs.ORDER_BUYER)
private String orderBuyer;
@Field(type = FieldType.Keyword,name = OrderEs.ORDER_PHONE)
private String orderPhone;
@Field(type = FieldType.Keyword,name = OrderEs.REAL_PAY)
private String realPay;
@Field(type = FieldType.Keyword,name = OrderEs.ACCOUNT)
private String account;
}第五步:写测试接口,这里展示了插入和查询两个方法
@RestController
@RequestMapping("/order")
@CrossOrigin
public class OrderController
@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
/**
* es插入
*
* @return {@link String}
*/
@GetMapping("/esinsert")
@Transactional
public String esInsert(){
OrderEsPO orderEsPO = new OrderEsPO();
orderEsPO.setOrderNo("1234455");
orderEsPO.setOrderBuyer("张三");
orderEsPO.setOrderPhone("13191892075");
orderEsPO.setRealPay("100000");
orderEsPO.setAccount("1008611");
elasticsearchRestTemplate.save(orderEsPO);
return "success";
}
/**
* es搜索
*
* @param orderEsPO 订单es参数
* @return {@link String}
*/
@GetMapping("/essearch")
@Transactional
public String esSearch(OrderEsPO orderEsPO){
/**构造查询对象**/
BoolQueryBuilder booleanQueryBuilder = QueryBuilders.boolQuery();
/**编写查询条件**/
booleanQueryBuilder.should(QueryBuilders.termQuery(OrderEs.ORDER_NO,orderEsPO.getOrderNo()));
/**构造query对象**/
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(booleanQueryBuilder);
/**搜索**/
SearchHits<OrderEsPO> search = elasticsearchRestTemplate.search(nativeSearchQuery, OrderEsPO.class, IndexCoordinates.of(OrderEs.INDEX_NAME));
List<OrderEsPO> collect = search.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());
return collect.toString();
}
}然后我们启动项目,先调用插入接口,由于这个索引一开始是不存在的,第一次调用后会默认创建索引,然后打开我们的可视化界面,就能看到这里的索引

再调用查询,就能看到如下信息了

说明两个接口都能被调用成功,es的简单使用就完成了
到此这篇关于springboot集成es 插入和查询的简单使用的文章就介绍到这了,更多相关springboot集成es 查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解IDEA2020新建spring项目和c3p0连接池的创建和使用
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,本文就使用Spring实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-08-08
Spring Boot Admin Server管理客户端过程详解
这篇文章主要介绍了Spring Boot Admin Server管理客户端过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-03-03
SpringBoot详细讲解如何创建及刷新Spring容器bean
前面看spring源码时可以发现refresh()方法十分重要。在这个方法中会加载beanDefinition,同时创建bean对象。那么在springboot中有没有使用这个refresh()方法呢2022-06-06
使用LambdaQueryWrapper动态加过滤条件 动态Lambda
这篇文章主要介绍了使用LambdaQueryWrapper动态加过滤条件 动态Lambda,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。2022-01-01
解决java.lang.IllegalArgumentException: URI is
这篇文章主要介绍了解决java.lang.IllegalArgumentException: URI is not hierarchical报错的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-06-06


最新评论