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()