Springboot集成springdataelasticsearch过程详解
版本对照
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,10年企业及个人网站建设经验 ,为成都上1000家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,品牌网站设计,同时也为不同行业的客户提供成都网站设计、网站建设的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联。

各版本的文档说明:https://docs.spring.io/spring-data/elasticsearch/docs/
1、在application.yml中添加配置
spring:
data:
elasticsearch:
repositories:
enabled: true
#多实例集群扩展时需要配置以下两个参数
#cluster-name: datab-search
#cluster-nodes: 127.0.0.1:9300,127.0.0.1:9301 2、添加 Maven 依赖
org.springframework.boot spring-boot-starter-data-elasticsearch
3、建立实体entity
注解说明:
Spring Data通过注解来声明字段的映射属性,有下面的三个注解:
- @Document 作用在类,标记实体类为文档对象,一般有两个属性
- indexName:对应索引库名称
- type:对应在索引库中的类型
- shards:分片数量,默认5
- replicas:副本数量,默认1
- @Id 作用在成员变量,标记一个字段作为id主键
- @Field 作用在成员变量,标记为文档的字段,并指定字段映射属性:
- type:字段类型,是枚举:FieldType,可以是text、long、short、date、integer、object等
- text:存储数据时候,会自动分词,并生成索引
- keyword:存储数据时候,不会分词建立索引
- Numerical:数值类型,分两类
- 基本数据类型:long、interger、short、byte、double、float、half_float
- 浮点数的高精度类型:scaled_float
- 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
- Date:日期类型
- elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
- index:是否索引,布尔类型,默认是true
- store:是否存储,布尔类型,默认是false
- analyzer:分词器名称,这里的ik_max_word即使用ik分词器
示例:
@Document(indexName = "cp_doc", type = "doc", shards = 10, replicas = 0)
public class CpDocument extends BaseEntity {
@Id//作用在成员变量,标记一个字段作为id主键
private long id ;
@Field(type = FieldType.Text)
private String name ;
@Field(type = FieldType.Text)
private String address ;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} 4、编写 Repository 访问层
/** * 基本操作repository-curd * @author 滚动的蛋 * */ public interface CpRepository extends ElasticsearchRepository{ }
5、创建索引+查询示例
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchTest {
@Autowired
CpRepository cpRepository;
@Autowired
ElasticsearchTemplate elsTemplate;//ElasticsearchTemplate中提供了创建索引的API
@Test
public void addIndexTest() {
//创建索引
boolean indexRes = elsTemplate.createIndex(CpDocument.class);
System.out.println("======创建索引结果:"+indexRes+"=========");
//添加索引
CpDocument cpTest = new CpDocument();
cpTest.setId(1);
cpTest.setName("阿里巴巴");
cpTest.setAddress("北京路12号");
cpRepository.save(cpTest);
}
@Test
public void srarchTest() {
//这个只做一个多字段的匹配查询示例,其它的可以查看API文档使用
//"name","address" 为匹配的字段
MultiMatchQueryBuilder multiMatchQuery = QueryBuilders.multiMatchQuery("阿里巴巴","address","name");//多字段匹配QueryBuilder
SearchQuery searchQuery = new NativeSearchQueryBuilder()//构建查询对象
.withQuery(multiMatchQuery)
.withIndices("cp_doc")//索引名
.withPageable(PageRequest.of(0, 10))//分页
.build();
Iterable productDtos = cpRepository.search(searchQuery);
ArrayList CpDocuments = Lists.newArrayList(productDtos);
for (CpDocument cpDocument : CpDocuments) {
System.out.printf("企业名称:%s,企业地址:%s\n",cpDocument.getName(),cpDocument.getAddress());
}
} 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
新闻标题:Springboot集成springdataelasticsearch过程详解
分享路径:http://www.jxjierui.cn/article/pedcip.html


咨询
建站咨询
