springboot series-elasticsearch

Introduccion

Cliente REST de bajo nivel de Java : el cliente oficial de bajo nivel para Elasticsearch. Permite comunicarse con un clúster de Elasticsearch a través de http. Deja solicitudes de clasificación y respuestas para los usuarios. Es compatible con todas las versiones de Elasticsearch.
Cliente REST de bajo nivel de Java : Cliente oficial de bajo nivel proporcionado. El cliente se conecta al clúster Elasticsearch a través de http. Al usar el cliente, los usuarios deben unir manualmente los datos de la solicitud en el formato JSON requerido por Elasticsearch y enviarlos. Al recibir la respuesta, también deben encapsular manualmente los datos JSON devueltos en objetos. Aunque problemático, el cliente es compatible con todas las versiones de Elasticsearch. El cliente de bajo nivel incluye las siguientes características:

1.极少的依赖包
2.负载均衡访问所有可用节点
3.故障转移。当发生节点故障时会返回特定的状态码
4.连接失败处罚策略。(客户端是否会去重连一个连接失败的节点取决于该节点连续连接失败的次数,连接该节点失败次数越多,客户端下次重连它的时间就越长)
5.持久连接
6.跟踪记录请求和响应日志
7.可选的集群节点自动发现

Cliente REST de alto nivel de Java : el cliente oficial de alto nivel para Elasticsearch. Basado en el cliente de bajo nivel, expone los métodos específicos de la API y se ocupa de las solicitudes de clasificación y respuestas de clasificación.
Cliente REST de alto nivel de Java: proporcionado oficialmente avanzado Cliente. El cliente se implementa en función de un cliente de bajo nivel, que proporciona muchas API convenientes para resolver el problema de los clientes de bajo nivel que necesitan convertir manualmente formatos de datos (es decir, clientes de alto nivel, sin necesidad de solicitud de relación y conversión de datos de respuesta)

método rest-low-level-client

dependencia de Maven

!-- Elasticsearch Dependencies -->
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-client</artifactId>
			<version>6.5.4</version>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>6.5.4</version>
		</dependency>

La operación es relativamente engorrosa (para combinarse con una api básica), aquí solo hablamos de un ejemplo simple, estoy interesado en estudiar en profundidad ...
Escriba declaraciones de consulta en la herramienta de visualización, verifique que no haya ningún problema para poner el código:
en el complemento de la cabeza:
Inserte la descripción de la imagen aquí
En kibana
Inserte la descripción de la imagen aquí

El código es el siguiente:
Inserte la descripción de la imagen aquí

Referencia del código: https://github.com/472732787/com-spring-multiple-datasource/tree/master/spring-boot-es-RestLowLevelClient
Referencia de sintaxis: https://www.elastic.co/guide/en/elasticsearch /reference/6.5/query-dsl.html

método rest-high-level-client

dependencia de Maven

<!-- Elasticsearch Dependencies -->
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>6.5.4</version>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-high-level-client</artifactId>
			<version>6.5.4</version>
		</dependency>

Archivo de configuración:

spring:
  data:
    elasticsearch:
      cluster-nodes: 127.0.0.1:9201,127.0.0.1:9202,127.0.0.1:9203
      repositories:
        enabled: true
      cluster-name: my-application

Clase de configuración:

package spring.boot.es.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * @author liuli
 */
@Configuration
public class ElasticSearchConfiguration extends AbstractFactoryBean {

    private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchConfiguration.class);

    @Value("${spring.data.elasticsearch.cluster-nodes}")
    private String clusterNodes ;

    @Value("${spring.data.elasticsearch.cluster-name}")
    private String clusterName;

    private RestHighLevelClient restHighLevelClient;

    @Override
    public void destroy() throws Exception {
        // 关闭Client
        if (restHighLevelClient != null) {
            restHighLevelClient.close();
        }
    }

    @Override
    public Class<RestHighLevelClient> getObjectType() {
        return RestHighLevelClient.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }

    @Override
    protected Object createInstance() throws Exception {
        try {
            List<HttpHost> list = new ArrayList<HttpHost>();
            if (!"".equals(clusterNodes)){
                for (String nodes:clusterNodes.split(",")) {
                    String InetSocket [] = nodes.split(":");
                    String  host = InetSocket[0];
                    Integer  port = Integer.valueOf(InetSocket[1]);
                    list.add(new HttpHost(host, port, "http"));
                }
            }
            // 如果有多个节点,构建多个HttpHost
            restHighLevelClient = new RestHighLevelClient(
                    RestClient.builder(list.get(0),list.get(1),list.get(2))
            );

        } catch (Exception e) {
            LOG.error(e.getMessage());
        }
        return restHighLevelClient;
    }
}

Referencia del código fuente:
https://github.com/472732787/com-spring-multiple-datasource/tree/master/spring-boot-es-RestHighLevelClient

Materiales de referencia:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/index.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.5/ search.html

Publicado 51 artículos originales · ganado elogios 2 · Vistas 6374

Supongo que te gusta

Origin blog.csdn.net/wenwang3000/article/details/99820920
Recomendado
Clasificación