SpringBoot Data操作Elasticsearch

1. 环境准备

1.springboot 2.2.5
2.elasticsearch v6.8.0

2.引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

3.编写配置类

@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
   
	
	@Override
	@Bean
	public RestHighLevelClient elasticsearchClient() {
   
		ClientConfiguration clientConfiguration = ClientConfiguration.builder()
													.connectedTo("192.168.98.137:9200")
													.build();
		return RestClients.create(clientConfiguration).rest();
	}
}

4.编写pojo类

/**
 * -indexName:索引名称,要求es服务器中不能存在此索引名
 * -type:类型名称
 * @author 86134
 *
 */
@Data
@Document(indexName="users",type="user")
public class User {
   
	
	@Id //用来将对象id属性与文档中_id的值对应
	private String id;
	
	@Field(type=FieldType.Text,analyzer ="ik_max_word")
	private String name;
	
	@Field(type=FieldType.Integer)
	private Integer age;
	
	@Field(type=FieldType.Date)
	@JsonFormat(pattern="yyyy-MM-dd")	//指定日期格式化
	private Date bir;
	
	@Field(type=FieldType.Text,analyzer ="ik_max_word")
	private String content;
	
	@Field(type=FieldType.Text,analyzer ="ik_max_word")
	private String address;
}

@Document: 代表一个文档记录

indexName: 用来指定索引名称

type: 用来指定索引类型

@Id: 用来将对象中id和ES中_id映射

@Field: 用来指定ES中的字段对应Mapping

type: 用来指定ES中存储类型

analyzer: 用来指定使用哪种分词器

5.编写UserRespository

/**
 * -第一个参数:对应es的实体类
 * -第二个参数:实体类主键的类型
 * -spring工厂中有ElasticsearchRepository
 * @author 86134
 *
 */
public interface UserRespository extends ElasticsearchRepository<User,String> {
   
}

6.对文档的CRUD

1.索引或更新一条文档

	//保存|更新一条文档,取决id是否存在
	@Test
	public void save() {
   
		User user = new User();
		user.setId(UUID.randomUUID().toString());
		user.setName("王五");
		user.setBir(new Date());
		user.setAge(2820);
		user.setAddress("广西");
		user.setContent("王五是吃屎传人,吃屎很厉害");
		
		userRespository.save(user);
	}

2.删除一条文档

@Test
public void delete() {
   
	userRespository.deleteById("ead608fe-4bfb-4337-bae5-a2fde0e6326b");
}

3.查询一条文档

public void findOne() {
   
	Optional<User> optional = userRespository.findById("61bf673e-0857-462d-b703-56d443537446");
	User user = optional.get();
	System.out.println(user);
}

4.查询所有并排序

public void findAll() {
   
	Iterable<User> iterable = userRespository.findAll(Sort.by(Direction.DESC, "age")); //根据年龄降序排序
	iterable.forEach(user->System.out.println(user.getName()));
}

5.分页查询

public void pageQuery() {
   
	//PageRequest.of:参数1:当前页-1,参数2:每页显示条数
	Page<User> page = userRespository.search(QueryBuilders.matchAllQuery(),PageRequest.of(0, 1));
	page.forEach(user->System.out.println
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开箱即用的框架,可以简化Java应用程序的开发。而Elasticsearch是一个开源的搜索引擎,具有强大的全文搜索和分析能力。 要在Spring Boot中操作Elasticsearch,首先需要在项目的依赖管理中增加Elasticsearch的相关依赖,例如elasticsearch和spring-boot-starter-data-elasticsearch。 在配置文件(application.properties或application.yml)中,需要设置Elasticsearch的连接信息,如主机名、端口号和索引名称等。可以通过spring.data.elasticsearch.cluster-nodes和spring.data.elasticsearch.cluster-name属性来进行配置。 接下来,在Java代码中,可以使用Spring Data Elasticsearch提供的API来进行操作。可以通过注解方式定义实体类和索引,使用ElasticsearchRepository来实现数据的增删改查操作。 通过ElasticsearchRepository的save方法可以将数据保存到Elasticsearch中。通过findById方法可以根据ID查询数据,通过search方法可以进行全文搜索等。 在使用Elasticsearch的时候,还可以进行索引的创建和删除操作。可以使用IndicesAdminClient提供的API来调用创建和删除索引的操作。 此外,Elasticsearch还提供了丰富的搜索功能,如分页查询、排序查询、聚合查询等。可以通过QueryBuilder和SearchRequestBuilder等类来构建复杂的查询语句。 总之,Spring Boot和Elasticsearch的结合可以提供一个简便而强大的搜索引擎应用程序开发框架。开发人员可以通过简单的配置和API调用来实现数据的存储、检索和分析功能,大大简化了开发过程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值