Spring Data ElasticSearch环境搭建与使用(二)

1.映射类

  • 映射类:用于表示java的数据和elasticsearch的数据对应关系,在spring data elasticsearch中使用注解完成
注解名称 描述
@Document 用于配置Java类与索引/类型对应关系
-indexName:对应索引库名称
- type:对应在索引库中的类型
- shards:分片数量,默认5
- replicas:副本数量,默认1
@Field 用于配置Java属性和es的字段对应关系
– type:字段类型,枚举:FieldType
– analyzer:分词器名称
– index:是否索引,布尔类型,默认是true
– store:是否存储,布尔类型,默认是false
  • 代码实现
package com.czxy.changgou3.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

/**
 * @author [email protected]
 * @version 1.0
 * @date 2020/4/13
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "test",type = "book",shards = 4,replicas = 2)
public class ESBook {
    @Id
    private Long id;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String title;

    @Field(type = FieldType.Keyword,index = true)
    private String images;

    @Field(type = FieldType.Float)
    private Float price;
}

2.创建索引、添加映射、删除索引

ElasticsearchTemplate工具类提供对应方法完成以下功能:

  • 创建索引: createIndex( 映射类.class )
  • 添加映射: putMapping( 映射类.class )
  • 删除索引: deleteIndex( 映射类.class )

步骤一:测试类中,直接注入ElasticsearchTemplate

    @Resource
    private ElasticsearchTemplate elasticsearchTemplate;

步骤二:调用对应的API进行操作

package com.czxy.changgou3.elasticsearch;

import com.czxy.changgou3.TestApplication;
import com.czxy.changgou3.vo.ESBook;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

/**
 * @author [email protected]
 * @version 1.0
 * @date 2020/4/13
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class TestES {

    @Resource
    private ElasticsearchTemplate elasticsearchTemplate;
    @Test
    public void demo01(){
        //创建索引
      elasticsearchTemplate.createIndex(ESBook.class);
}
    @Test
    public void demo02(){
        //添加映射
        elasticsearchTemplate.putMapping(ESBook.class);
    }
    @Test
    public void demo03(){
        //删除映射
        elasticsearchTemplate.deleteIndex(ESBook.class);
    }
}

3.添加数据

方法名 描述
save() 保存一个数据
saveAll( ) 保存一组数据
  • 代码实现
package com.czxy.changgou3.elasticsearch;

import com.czxy.changgou3.TestApplication;
import com.czxy.changgou3.repostitory.ESBookRepository;
import com.czxy.changgou3.vo.ESBook;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @author [email protected]
 * @version 1.0
 * @date 2020/4/13
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class TestESData {
    @Resource
    private ESBookRepository esBookRepository;
    @Test
    public void demo01(){
        ESBook esBook = new ESBook(5L, "不堪回首的往事", "1.jpg", 998f);
        //添加一个数据
        esBookRepository.save(esBook);
    }
    @Test
    public void demo02(){
        //添加一组数据
        List<ESBook> list = new ArrayList<>();
        list.add(new ESBook(2L,"爱情故事1","2.jpg",456f));
        list.add(new ESBook(3L,"爱情故事2","3.jpg",290f));
        list.add(new ESBook(4L,"爱情故事3","4.jpg",100f));
        esBookRepository.saveAll(list);
    }
   @Test
    public void demo03(){
        //更新数据
       ESBook esBook = new ESBook(1L, "哈哈哈个", "1111,jpg", 1998f);
       esBookRepository.save(esBook);
   }
   @Test
    public void demo04(){
        //通过id删除
       ESBook esBook = new ESBook();
       esBook.setId(1L);
       esBookRepository.delete(esBook);
   }
}

总结

1)ES模板:ElasticsearchTemplate

  • -构建索引:createIndex( 映射类.class )
  • 添加映射:putMapping( 映射类.class )
  • 删除索引:deleteIndex( 映射类.class )

2)映射类:java对象和ES数据对应

@Document,用于配置索引和类型名

  • indexName:索引名
  • type:类型名

@Id:唯一标识
@Field,映射中字段

  • type:字段类型
  • analyzer:分词
  • index:索引
  • store:备份

3)数据操作顶级接口Repository,功能比较全面的子接口ElasticsearchRepository

  • 添加数据:save(对象),saveAll(集合)
  • 删除数据:delete(对象),deleteById(T),deleteAll()
  • 基本查询:findAll(),findById()

猜你喜欢

转载自blog.csdn.net/weixin_46837596/article/details/105667055