Elasticsearch resthighlevelclient Noclassfound ошибка при индексировании данных в службу AWS elasticsearch - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь проиндексировать документ в моей службе elasticsearch aws, но получаю ошибку NoClassDeffounderror. Я предоставил свой код ниже и любезно помог мне решить эту проблему.

Elasti c версия поиска : 7.1 (In aws)

зависимость pom:

<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.1.1</version>
        </dependency>

База кода

package com.saas.elasticsearch;

import java.io.IOException;

import org.apache.http.HttpHost;
import org.apache.http.HttpRequestInterceptor;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;

import com.amazonaws.auth.AWS4Signer;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;

public class test {

    private static String serviceName = "es";
    private static String region = "us-west-1";
    private static String aesEndpoint = "https://search-google-qrftppppppdfpy6qe57kzjha.us-west-1.es.amazonaws.com"; // e.g.
                                                                                                                        // https://search-mydomain.us-west-1.es.amazonaws.com
    private static String Ecmindex = "ecmindex";
    // private static String duckcreekindex = "ecmindex";
    private static String type = "_doc";

    final static AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();

    public static RestHighLevelClient esClient(String serviceName, String region) {
        AWS4Signer signer = new AWS4Signer();
        signer.setServiceName(serviceName);
        signer.setRegionName(region);
        HttpRequestInterceptor interceptor = new AWSRequestSigningApacheInterceptor(serviceName, signer,
                credentialsProvider);
        return new RestHighLevelClient(RestClient.builder(HttpHost.create(aesEndpoint))
                .setHttpClientConfigCallback(hacb -> hacb.addInterceptorLast(interceptor)));
    }

    

    public static void main(String[] args) throws IOException {
        RestHighLevelClient esClient = esClient(serviceName, region);
        String JsonString = "{\r\n" + "  \"Name\": \"Jai\",\r\n" + "  \"Age\": \"31\",\r\n"
                + "  \"Occupation\": \"architect\",\r\n" + "  \"City\": \"xxxxcdf\"\r\n" + "}";
        
        IndexRequest indexRequest = new IndexRequest("duke", "_doc", "34567");
        indexRequest.source(JsonString, XContentType.JSON);
        IndexResponse indexResponse = esClient.index(indexRequest, RequestOptions.DEFAULT);
        
        System.out.println(indexResponse.toString());
    }
}

я получаю ошибку ниже, когда я запускаю основную функцию:

Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/action/admin/indices/analyze/AnalyzeRequest
    at org.elasticsearch.client.RestHighLevelClient.<init>(RestHighLevelClient.java:244)
    at org.elasticsearch.client.RestHighLevelClient.<init>(RestHighLevelClient.java:273)
    at org.elasticsearch.client.RestHighLevelClient.<init>(RestHighLevelClient.java:265)
    at com.saas.elasticsearch.test.esClient(test.java:36)
    at com.saas.elasticsearch.test.main(test.java:43)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

Может ли кто-нибудь помочь мне решить проблему, потому что я должен сделать это как услугу java, но она даже не работает в моей основной функции, если я выполняю ее отдельно.

...