专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Elasticsearch报错一:Exception in thread "main" Java.lang.NoSuchMethodError: 'void o

错误描述

Exception in thread "main" java.lang.NoSuchMethodError: 'void org.elasticsearch.client.Request.addParameters(java.util.Map)'
    at org.elasticsearch.client.RequestConverters.search(RequestConverters.java:408)
    at org.elasticsearch.client.RestHighLevelClient.lambda$search$2(RestHighLevelClient.java:972)
    at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1510)
    at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484)
    at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454)
    at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:970)
    at com.lehe.higo.storage.HelloElasticsearch.queryAll(HelloElasticsearch.java:52)
    at com.lehe.higo.storage.HelloElasticsearch.main(HelloElasticsearch.java:21)

配置

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.6.2</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

测试代码

package com.lehe.higo.storage;

import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;

import java.io.IOException;

public class HelloElasticsearch {
    public static void main(String[] args) {
        queryAll();
    }

    private static RestHighLevelClient getClient() {
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")
                )
        );
    }

    private static void queryAll() {
        try (RestHighLevelClient client = getClient()) {

            SearchRequest searchRequest = new SearchRequest();

            searchRequest.indices("bank");

            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

            searchSourceBuilder.sort(new FieldSortBuilder("id") . order(SortOrder.ASC));

            searchSourceBuilder.from(0);
            searchSourceBuilder.size(20);

            searchSourceBuilder.query(boolQueryBuilder);

            searchRequest.source(searchSourceBuilder);

            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

            SearchHits hits = searchResponse.getHits();
            SearchHit[] searchHits = hits.getHits();

            for (SearchHit hit : searchHits) {
                String sourceAsString = hit.getSourceAsString();
                System.out.println(sourceAsString);
            }

            client.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解决方案

当使用springboot + Elasticsearch时,需要明确指定依赖。

<properties>
  <elasticsearch.version>7.6.2<elasticsearch.version>
</properties>

参考

文章永久链接:https://tech.souyunku.com/45081

未经允许不得转载:搜云库技术团队 » Elasticsearch报错一:Exception in thread "main" Java.lang.NoSuchMethodError: 'void o

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们