SpringBoot3整合elasticsearch8

版本

SpringBoot == 3.0

Elasticsearch == 8.12.1

依赖

我使用的

复制代码
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

还可以用,但我没用的。1,2一起用会报下面第一个错

bash 复制代码
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.12.1</version>
</dependency>

注意:elasticsearch7.17版本之前使用的是,现在已经被弃用

bash 复制代码
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.18</version>
</dependency>

资料

之前看的elasticsearch7.17之前如何做的:链接

elasticsearch7.17以上的代码示例:链接

官方文档:链接

一个介绍:链接

报错

错误1:Correct the classpath of your application so that it contains compatible versions of the classes org

我的解决方法就是只用第一个依赖

错误2:Error deserializing co.elastic.clients.elasticsearch.core.search.Hit: jakarta.json.JsonException: Ja

解决方法

其他

贴一个,elasticsearch7.17之前的配置,但最好还是用最新的方法

java 复制代码
@Data
@Configuration
@ConfigurationProperties(prefix = "es")
public class ESConfig {
    private String esUrl;
    private String esUsername;
    private String esPassword;

    @Bean
    public RestHighLevelClient configRestHighLevelClient() throws Exception {
        String[] esUrlArr = esUrl.split(",");
        List<HttpHost> httpHosts = new ArrayList<>();
        for(String es : esUrlArr){
            String[] esUrlPort = es.split(":");
            httpHosts.add(new HttpHost(esUrlPort[0], Integer.parseInt(esUrlPort[1]), "http"));
        }

        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(esUsername, esPassword));

        RestClientBuilder builder = RestClient.builder(httpHosts.toArray(new HttpHost[0]))
                .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
        System.out.println("ES配置完成");
        return new RestHighLevelClient(builder);
    }
}
java 复制代码
@org.junit.Test
    public void getDocument() throws Exception {
        try (RestHighLevelClient client = new ESConfig().configRestHighLevelClient()) {
            // 指定要搜索的索引名称
            String indexName = "cartoon_reply_info";

            // 创建搜索请求对象
            SearchRequest searchRequest = new SearchRequest(indexName);

            // 创建搜索请求的查询条件
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(QueryBuilders.matchQuery("content", "世界"));
            searchSourceBuilder.query(QueryBuilders.matchAllQuery()); // 匹配所有文档
            searchSourceBuilder.size(10); // 设置返回结果的数量
            searchSourceBuilder.sort("mediaId", SortOrder.DESC); // 根据字段排序
            searchSourceBuilder.highlighter(new HighlightBuilder().field("世界")); // 设置高亮字段
            searchSourceBuilder.size(10);
            // 将查询条件添加到搜索请求中
            searchRequest.source(searchSourceBuilder);

            // 执行搜索请求
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

            // 处理搜索结果
            // 您可以从 searchResponse 中获取搜索结果并进行进一步的处理
            // 示例中省略了处理过程
            for (SearchHit hit : searchResponse.getHits().getHits()) {
                System.out.println(hit.getSourceAsString()); // 输出文档内容
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
相关推荐
阿里云大数据AI技术13 小时前
阿里云 Elasticsearch 9.4 Agent Builder 实战
人工智能·elasticsearch·agent
暖和_白开水18 小时前
数据分析agent(九-2):es启动补充
大数据·elasticsearch·搜索引擎
海兰19 小时前
基于 ES|QL 的 Kubernetes 监控工具箱:使用 ES|QL 进行 Kubernetes 监控,从内存压力到错误日志
大数据·elasticsearch·kubernetes
稚南城才子,乌衣巷风流20 小时前
树哈希(Tree Hashing)原理与应用详解
算法·elasticsearch·哈希算法
暖和_白开水21 小时前
数据分析agent(十):loguru日志输出优化 和es 启动流程
java·elasticsearch·数据分析
一次旅行2 天前
【效率秘籍】Shell 函数+别名组合拳,让 80% 的重复命令变 1 个字母
大数据·elasticsearch·搜索引擎
暖和_白开水2 天前
数据分析agent(九):es_client_manager.py 和分词器ik_max_word问题
elasticsearch·数据分析·c#
码农学院2 天前
Elasticsearch构建汽车零配件智能搜索与匹配系统
大数据·elasticsearch·汽车
Elastic 中国社区官方博客3 天前
不到 5 分钟完成本地部署:Jina embedding 模型现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·embedding·jina
二进制流水搬运工3 天前
入职第一天拉了23个仓库,我写了个脚本解放双手
大数据·elasticsearch·搜索引擎