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();
            }
        }
    }

     

  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/niutao/p/10909194.html
Copyright © 2011-2022 走看看