springboot整合es并简单使用

springboot整合es

1 引入依赖

<!-- es版本号 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

2 配置es地址

spring:
  elasticsearch:
    uris: 192.168.155.20:9200   # es的连接地址

3 创建实体类并使用注解

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
/**
 * @author ypc
 * @desc 用户索引库
 * @date
 */
@Data
@Document(indexName = "user-demo")  //es这里注解的索引库名字不能使用驼峰命名
public class User {

    @Id  //
    private String id;  //对应索引库中的id  String和Integer都是可以的

    private String username;

    private String address;

    private Integer age;

    private String gender;

}

4 编写userMapper接口继承ElasticsearchRepository接口

如果官方提供的api不够的话 – 需要自己在继承ElasticsearchRepository接口中添加自定义的方法

import java.util.List;

/**
 * @author ypc
 * @desc 自定义一个mapper接口继承es的资源接口 实现curd操作 -- 写不写@repository都没事
 * @date
 */
public interface UserMapper extends ElasticsearchRepository<User,String> {
	
    /**
     * 方法名字是和实体类中的子段名字有关系的 - 会提示 - 自定义查询方法-按照用户名查 -- 如果返回page类型的话 需要在参数中传递分页的一些参数等 否则会报错
     * Username 第一个字母大写没有事 - 对应实体类username
     */
    List<User> findByUsername(String userName);  //类似精确匹配

    /**
     * 自定义返回Page的方法 springdata中的  包含username就就可以
     */
    Page<User> findByUsernameContaining(String userName, Pageable page);
}

5 测试方法编写

// 新增
 User save = userMapper.save(user);
 
 //根据id删除索引库中某条数据
 userMapper.deleteById(id);
 
//根据id修改索引库中某条数据
User save = userMapper.save(user);

//单条数据查询
Optional<User> byId = userMapper.findById("4");
System.out.println(byId);

//查询所有
//模糊匹配
        Iterable<User> all = userMapper.findAll();
        ArrayList<User> list = new ArrayList<>();
        for (User user:all) {
            System.out.println(user);
            list.add(user);
        }

//根据id查询
 Iterable<User> allById = userMapper.findAllById(ids);
        Iterator<User> iterator = allById.iterator();
        //或者foreach循环
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

6 测试UserMapper中自定义的方法

// 测试根据索引库中的username精确查找文档 返回List
 List<User> zhangsan5 = userMapper.findByUsername("zhangsan5");  //[User(id=4, username=zhangsan4, address=河北省4, age=8, gender=男)]
        System.out.println(zhangsan5);

 // 测试返回Page对象 需要传入分页参数Pageable 类型   查1-100条  重0开始
        Pageable pageable = PageRequest.of(0, 100);
        Page<User> page = userMapper.findByUsernameContaining("zhangsan", pageable);
        System.out.println(page.getContent()); //得到内容

7 在kibana中进行测试查看

。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是SpringBoot整合Elasticsearch的步骤: 1. 添加Elasticsearch的依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 2. 配置Elasticsearch连接 在application.yml或application.properties中添加以下配置: ``` spring: data: elasticsearch: cluster-name: elasticsearch # Elasticsearch集群名称 cluster-nodes: 127.0.0.1:9300 # Elasticsearch连接地址 ``` 3. 创建Elasticsearch实体类 创建一个Java类,使用@Document注解标记为Elasticsearch文档类型,并使用其他注解指定属性的映射关系,如下所示: ``` @Document(indexName = "my_index", type = "my_type") public class MyDocument { @Id private String id; private String title; private String content; // ... 省略getter和setter方法 } ``` 4. 创建Elasticsearch操作接口 创建一个接口,继承ElasticsearchRepository接口,并指定泛型为步骤3中创建的实体类,如下所示: ``` public interface MyDocumentRepository extends ElasticsearchRepository<MyDocument, String> { } ``` 5. 使用Elasticsearch操作数据 在需要使用Elasticsearch的地方注入MyDocumentRepository,即可使用其提供的方法进行数据的CRUD操作,如下所示: ``` @Autowired private MyDocumentRepository repository; public void save(MyDocument document) { repository.save(document); } public MyDocument findById(String id) { return repository.findById(id).orElse(null); } public void deleteById(String id) { repository.deleteById(id); } ``` 以上就是SpringBoot整合Elasticsearch的基本步骤,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值