zoukankan      html  css  js  c++  java
  • 使用java操作elasticsearch之与es简历连接

    Elasticsearch 的 Java 客户端非常强大;它可以建立一个嵌入式实例并在必要时运行管理任务。

    运行一个 Java 应用程序和 Elasticsearch 时,有两种操作模式可供使用。该应用程序可在 Elasticsearch 集群中扮演更加主动或更加被动的角色。在更加主动的情况下(称为 Node Client),应用程序实例将从集群接收请求,确定哪个节点应处理该请求,就像正常节点所做的一样。(应用程序甚至可以托管索引和处理请求。)另一种模式称为 Transport Client,它将所有请求都转发到另一个 Elasticsearch 节点,由后者来确定最终目标

    ElasticSearch 服务默认端口 9300 (java操作的时候)
    Web 管理平台端口 9200

    Nodeclient的好处是提交代码就是集群中的一台机器,node client知道整个集群的状态,而且在执行api的时候可以少用一个网络的跳跃

    缺点:太沉重了,而且仅仅是api的网络跳跃,对于整个集群来说,优化效果几乎没有

    Transport Client有一个好处就是,如果我们要创建很多的连接,比如上千个连接,但是如果使用node client的话,就会有上千个node client假如集群;这样就太沉重了,会给集群造成负担;

    如果使用的是Transport Client就轻了很多,因为Transport Client不是集群的一部分

    导入maven

    <dependencies>
        <!-- Elasticsearch核心依赖包 -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.5.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version></dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.1</version>
        </dependency></dependencies>

    1.1:建立连接

    import org.elasticsearch.client.Client;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.junit.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    
    /**
     * Created by angel on 2018/4/24.
     */
    public class TestClientConn {
        
    
        public final static String HOST = "hadoop01";
    
        public final static int PORT = 9300;//http请求的端口是9200,客户端是9300
    
        Settings settings = Settings.builder().put("cluster.name", "cluster_es").build();
    
        TransportClient transportClient;
        @Test
        public void getConnection(){
    
            try {
    //TODO  PreBuiltTransportClient构建TransportClient连接远程的elasticsearch
    
                transportClient = new PreBuiltTransportClient(settings)
                        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
                System.out.println("collection elasticsearch client:" + transportClient.toString());
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }finally {
                transportClient.close();
            }
        }
    }

     

  • 相关阅读:
    Effective Scala
    逻辑思维题之分桃问题
    pygame for python3.3
    java学习笔记一
    xmapp的安装
    逻辑思维题之轮流问题
    串口通信
    基于java的socket编程
    使用PHP搭建书虫网站
    逻辑思维题之时针分针秒针问题
  • 原文地址:https://www.cnblogs.com/niutao/p/10909194.html
Copyright © 2011-2022 走看看