Utilisez X-Pack pour vous connecter au cluster ES (la configuration du cluster Alibaba Cloud ES est 5.3.3) Le port est 9300

Ne pas vraiment savoir 6 . Version responsables ElasticSearch n'a pas recommandé ce port 9300 pour communiquer le recommandé 9200 client de se connecter au cluster parce que lui - même itérative ES ES est susceptible d'éliminer rapidement le port bien sûr 9300 un seul nœud n'a pas d' importance, mais l'environnement réel n'est pas recommandé d'utiliser un seul nœud

Utilisez X-pack pour vous connecter au cluster ES (j'utilise SpringBoot ici)

1. coordonnées Pom

		<!--x-pack-->
		<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>x-pack-transport</artifactId>
            <version>5.3.3</version>
        </dependency>
        <!--es连接客户端-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>transport</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
		<!--log4j-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>

2. écriture de fichier .yml

#ES 集群配置(version:5.3.3)
elasticSearch:
  host: es-cn-*************.public.elasticsearch.aliyuncs.com
  port: 9300
  cluster-name: ************
  user.password: elastic:*******

3. Ecrire la classe de configuration ES

package com.search.config;

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
public class ElasticsearchConfig {
    
    
    /**
     * es集群读取路径
     */
    public static final String X_PACK_ES_NAME = "cluster.name";
    /**
     * x-pack用户名密码读取路径
     */
    public static final String X_PACK_USER = "xpack.security.user";

    @Value("${elasticSearch.cluster-name}")
    private String esClusterName;
    @Value("${elasticSearch.host}")
    private String esHost;
    @Value("${elasticSearch.port}")
    private int esPort;
    @Value("${elasticSearch.user.password}")
    private String esUserPassword;

    private final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchConfig.class);

    /**
     * elasticsearch客户端注入(配置)
     *
     * @return
     * @throws UnknownHostException
     */
    @Bean
    public TransportClient transportClient() throws UnknownHostException {
    
    
        TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
                .put(X_PACK_ES_NAME, esClusterName) //替换为对应阿里云Elasticsearch实例的ID
                .put(X_PACK_USER, esUserPassword) //阿里云Elasticsearch实例的用户名、密码
                .put("client.transport.sniff", false) //设置sniff为false
                .build())
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(esHost), esPort));
        return client;
    }

}

Remarque: Vous pouvez vous référer à la documentation officielle d'Alibaba Cloud, mais vous devez faire attention au problème de la version. Le problème de la version est très fatal pour le développement SpringBoot de x-pack. Tout le monde doit savoir que ce genre de problème est difficile et difficile à résoudre. À l'époque, je suis personnellement allé voir mvn- Tree est allé voir les versions interdépendantes dans leur ensemble, puis j'ai changé l'adresse de l'entrepôt local maven et l'ai téléchargée à nouveau. C'est un casse-tête. est clair que la démo peut terminer la connexion, mais lorsque je l'injecte dans le projet par configuration, cela ne fonctionne pas. Cette méthode prend toujours en charge ElasticTemplate. Cette méthode prend également en charge le développement de @Document. Je pense personnellement que cette méthode est beaucoup plus simple que la méthode Client. Cependant, comme le fonctionnaire ne recommande pas l'utilisation du 9300, il y a une raison à cela après tout. La méthode est en effet dangereuse. x-pack n'est plus maintenu en 2017. Il y a encore de nombreux problèmes inconnus . Alibaba Cloud ne prend actuellement en charge cette méthode de connexion qu'en 5.3.3. Les autres utilisent tous 9200 pour la communication. TCP n'est pas pris en charge.

Je suppose que tu aimes

Origine blog.csdn.net/qq_43565087/article/details/107605812
conseillé
Classement