springboot整合ElasticSearch 使用elasticsearchTemplate和elasticsearchRepository两种方式

    xiaoxiao2025-01-26  12

    springboot整合ES的依赖

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> spring.data.elasticsearch.cluster-name=my-application spring.data.elasticsearch.cluster-nodes=localhost:9300 spring.data.elasticsearch.repositories.enabled=true

    1.使用elasticsearchRepository

    这种方式简单方便,以操作repository的方式操作ES 不了解ES的开发者也可以简单使用

    创建实体类,

    指定index(数据库)  type(数据库中的表) 分片和副本不是必须的

    @Document(indexName = "book",type = "book", shards = 1,replicas = 0, refreshInterval = "-1") public class Book { //注意 实现的实体类必须指定id属性 不然会报异常 private Integer id; private String bookName; private String author; private String publish; private Integer price; // setXXX()和getXXX() @Override public String toString() { return "Book{" + "id=" + id + ", bookName='" + bookName + '\'' + ", author='" + author + '\'' + ", publish='" + publish + '\'' + ", price=" + price + '}'; } }

    创建dao层

    只需要继承ElasticSearchRepository<Book,String>的接口  不需要自己去实现接口

    接口上 可以不使用任何注解(如:@Repository)

    public interface BookRepository extends ElasticsearchRepository<Book, String> { List<Book> findByPrice(Integer price); }

    测试类。。。 

    @RunWith(SpringRunner.class) @SpringBootTest public class ElasticsearchApplicationTests { @Autowired BookRepository bookRepository; @Test public void test1(){ Book book=new Book(); book.setAuthor("张三"); book.setBookName("javv从入门到放弃"); book.setPrice(24); book.setPublish("出版社"); bookRepository.save(book); Iterable<Book> all = bookRepository.findAll(); Iterator<Book> iterator = all.iterator(); while(iterator.hasNext()) { Book next = iterator.next(); System.out.println(next); } } }

    2.使用elasticsearchTemplate

    直接注入elasticsearchTemplate

    @Autowired ElasticsearchTemplate elasticsearchTemplate; @Test public void test2(){ Client client = elasticsearchTemplate.getClient(); GetResponse response = client.prepareGet("index", "type", "id").get(); System.out.println(response.getSource()); }

    以上只是简单的使用  elasticsearchTemplate方式的  如果想详细了解client的使用 -->  client的常用操作API

     

     

     

    最新回复(0)