Springboot整合Elasticsearch,查询数据的方式

参考文档地址:
Elasticsearch 官方文档地址:点击链接
Spring Data Elasticsearch 官方文档地址:点击链接

添加maven依赖

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

1.初始化Elasticsearch

  • 在yml配置文件中配置es的连接参数(略)
  • 新建一个config类,配置es(如下)
@Configuration
public class ElasticsearchConfig {
   

    @Bean
    public RestHighLevelClient restHighLevelClient() {
   
        // 这个是springboot的文档推荐写法
//        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
//                .connectedTo("192.168.203.129:9200").build();
//
//        return RestClients.create(clientConfiguration).rest();

        // es官方文档推荐写法
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("192.168.203.129", 9200, "http")));
        return client;
    }
}

2.简单查询

Spring Data Elasticsearch提供了一个ElasticsearchRepository接口,可以很方便的自定义简单的查询方法。

public interface MyRepository extends ElasticsearchRepository<User, Long> {
   

    /**
     * 根据id或者年龄或者名字查询
     * @param id
     * @param age
     * @param name
     * @return
     */
    User findByIdOrAgeOrName(Long id, Integer age, String name);

    /**
     * 删除年龄大于或等于给定值的数据
     * @param age
     */
    void deleteByAgeGreaterThanEqual(Integer age);

    /**
     * 搜索指定年龄段的user
     * @param start 开始年龄
     * @param end 结束年龄
     * @return
     */
    User findAllByAgeBetween(int start,int end);


}

这里要注意,自定义方法的名字是有规则的,idea会自动提示,根据提示,以及自己想要的操作,书写方法名和对应参数即可。在Spring Data Elasticsearch的文档里也有相关说明
image.png
image.png

1.1测试代码

@Autowired  
private MyRepository myRepository;

// 查询年龄为27岁的用户数据
@Test
void myTest6() {
   
	User rico = myRepository.findByIdOrAgeOrName(null, 27, null);
	System.out.println(rico);
}

// 插入一条user数据
@Test
void myTest7() throws IOException {
   
	User user = User.builder()
			.name("rico3")
			.age(35)
			.id(3L)
			.birthday(new Date())
			.build(
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot整合Elasticsearch进行查询的方法有多种,其中包括TransportClient、RestClient、Spring Data ElasticsearchElasticsearch SQL。官方推荐使用RestClient进行整合。要使用RestClient进行整合,你需要引入相应的依赖并配置相应的bean。首先,在你的项目中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 接下来,在你的配置类中添加以下bean定义,以创建RestHighLevelClient实例: ```java @Bean public RestHighLevelClient restHighLevelClient() { return new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); } ``` 这样,你就可以使用RestHighLevelClient来进行Elasticsearch查询操作了。例如,你可以使用模糊匹配索引名称的方法来查询索引: ```java GetIndexRequest getIndexRequest = new GetIndexRequest("log*"); GetIndexResponse getIndexResponse = restHighLevelClient.indices().get(getIndexRequest, RequestOptions.DEFAULT); List<String> elasticsearchList = new ArrayList<>(getIndexResponse.getMappings().keySet()); elasticsearchList.forEach(System.out::println); ``` 你还可以使用Java API来进行查询,例如使用existsQuery方法查询networkLogDetailInfo字段不为null的数据: ```java searchSourceBuilder.query(QueryBuilders.existsQuery("networkLogDetailInfo")); ``` 综上所述,以上是在Spring Boot整合Elasticsearch进行查询的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [优化大数据查询方案——SpringBoot(Cloud)整合ES](https://blog.csdn.net/goGoing_/article/details/125843879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot整合ES高级查询](https://blog.csdn.net/qq_41203483/article/details/121560366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值