es (elasticsearch) resumen del estudio preliminar (1)

Entorno operativo: Docker bajo centos7

Versión de Elasticsearch: 6.5.1 (no se utiliza la última versión, la última versión es 7.X)

versión jdk: 1.8 (demasiado larga, aproximadamente 8 versión)

Instale la imagen: docker pull docker.io/elasticsearch:6.5.1

Inicie el contenedor es:

docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms512M -Xmx512M" --name es6.5.1 docker.io/elasticsearch:6.5.1

Problemas que ocurren fácilmente al iniciar el contenedor es:

Problema 1: Desbordamiento de memoria, se muestra Exit (1) después del montaje , este estado puede ser un problema de memoria.

Solución:

Al iniciar el espejo, agregue -e ES_JAVA_OPTS = "- Xms512M -Xmx512M" para especificar el tamaño de la memoria. Como la declaración correcta anterior.

问题 二 : el número máximo de áreas de memoria virtual vm.max_map_count [xxx] es demasiado bajo, aumente a al menos [xxxx]

Este problema se obtiene a través del log, lo que básicamente significa que los permisos de memoria que posee el usuario de elasticsearch son demasiado pequeños, se requiere al menos xxxx

Solución:

Primero: cambie al usuario root para modificar la configuración sysctl.conf

vi /etc/sysctl.conf

Segundo: agregue la siguiente configuración al final del archivo:

vm.max_map_count=xxxx(此处的xxxx是你自己要填写的数值)

Tercero: sysctl -p (carga los parámetros del sistema desde el archivo especificado, si no se especifica, carga desde /etc/sysctl.conf)

Luego reinicie elasticsearch para comenzar con éxito

问题 三 :el tamaño del montón inicial [268435456] no es igual al tamaño máximo del montón [1073741824]; esto puede causar pausas de cambio de tamaño y evita que mlockall bloquee todo el montón

En términos generales, el tamaño de la memoria es inconsistente, lo que causa algunos problemas.

Solución: cuando utilice el comando -e ES_JAVA_OPTS = "- Xms512M -Xmx512M", configure los parámetros -Xms y -Xmx en el mismo tamaño.

El uso de ES y JAVA para crear clusters, índices y otros datos:

Utilice las herramientas de IDEA para crear un proyecto maven ( cómo crear un proyecto maven , instalación y configuración de maven , estos son dos enlaces).

El archivo elasticsearch.yml de ES en Docker debe tener la configuración network.host:0.0.0.0, cluster.name:xxxx (nombre del clúster).

archivo pom.xml de maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.kakatadage</groupId>
  <artifactId>esdemo</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>6.5.1</version>
    </dependency>

  </dependencies>

  <build>
    <finalName>esdemo</finalName>
    <plugins>
      <plugin>
        <!-- 设置javac编译器的版本和编码字符 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>utf8</encoding><!-- 编译器编码 -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Archivo de prueba:

package com.java.es.test;

import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;

import java.io.IOException;
import java.net.InetAddress;

public class EsDemo {

    //从ES中查询数据
    @Test
    public void test1() throws IOException {
        //指定ES集群,es的yml配置文件里面要有这个集群
        Settings setting = Settings.builder().put("cluster.name", "docker-cluster").build();

        //创建访问ES服务器的客户端,这里host为服务器对外IP,或者本地IP,取决于环境搭建在服务器还是本地
        TransportClient client = new PreBuiltTransportClient(setting)
                .addTransportAddress(
                        new TransportAddress(
                                InetAddress.getByName("host"),9300));

        IndexResponse response = client.prepareIndex("mfz", "mfz_tab", "1").setSource(XContentFactory.jsonBuilder()
                .startObject().field("name", "mfz")
                .field("sex", "男")
                .field("age", "22")
                .endObject()).get();

        System.out.println("索引名称:" + response.getIndex() + "\n类型:" + response.getType()
                + "\n文档ID:" + response.getId() + "\n当前实例状态:" + response.status());
        client.close();
    }
}

Para obtener más información, consulte: https://www.cnblogs.com/kakatadage/p/10021957.html , pero su clase de prueba no puede pasarme aquí. La razón es: su clase de prueba especifica el clúster es, pero lo siguiente es inútil (Como se muestra a continuación), mi clase de prueba se ha probado localmente. El mío está conectado al servidor y el suyo es local. Con respecto a la adición, eliminación y modificación de es y JAVA: consulte elasticsearch y adición, eliminación y modificación de JAVA

Supongo que te gusta

Origin blog.csdn.net/FV8023/article/details/96427911
Recomendado
Clasificación