1. 程式人生 > >ElasticSearch6(二)-- Java API連接es

ElasticSearch6(二)-- Java API連接es

RR work monitor 才會 你會 art 端口 有用 erro

此ElasticSearch系列基於最新版的6.2.4版本。

一、pom.xml依賴

    <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.2.4</version> </dependency> <dependency> <groupId>
org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.2.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</
artifactId> <version>1.2.46</version> </dependency> </dependencies>

二、log4j2.xml

技術分享圖片
<!--日誌級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration後面的status,這個用於設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,你會看到log4j2內部各種詳細輸出 -->
<!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設置間隔秒數 -->
<configuration status="WARN" monitorInterval="30">
    <!--先定義所有的appender -->
    <appenders>
        <!--這個輸出控制臺的配置 -->
        <console name="Console" target="SYSTEM_OUT">
            <!--輸出日誌的格式 -->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
        </console>
        <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用 -->
        <File name="log" fileName="log/test.log" append="false">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </File>
        <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔 -->
        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
            <ThresholdFilter level="info" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
        </RollingFile>
        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="warn" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件,這裏設置了20 -->
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
        </RollingFile>
    </appenders>
    <!--然後定義logger,只有定義了logger並引入的appender,appender才會生效 -->
    <loggers>
        <!--過濾掉spring和mybatis的一些無用的DEBUG信息 -->
        <logger name="org.springframework" level="INFO" />
        <logger name="org.mybatis" level="INFO" />
        <root level="INFO">
            <appender-ref ref="Console" />
            <appender-ref ref="RollingFileInfo" />
            <appender-ref ref="RollingFileWarn" />
            <appender-ref ref="RollingFileError" />
        </root>
    </loggers>
</configuration>
View Code

三、獲取es 連接

package com.xsjt.util;
import java.net.InetAddress;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

/**
 * ClassName:GetConnection Date: 2018年3月20日 下午8:12:07
 * 
 * @author xbq
 * @version
 * @since JDK 1.8
 */
public class GetConnection {

    public final static String HOST = "192.168.10.58";
    // http請求的端口是9200,客戶端是9300
    public final static int PORT = 9300; 

    /**
     * getConnection:(獲取es連接).
     * @author xbq Date:2018年3月21日上午11:52:02
     * @return
     * @throws Exception
     */
    @SuppressWarnings({"resource", "unchecked"})
    public static TransportClient getConnection() throws Exception {
        // 設置集群名稱
        Settings settings = Settings.builder().put("cluster.name", "nmtx-cluster").build();
        // 創建client
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT));
        
        client.close();
        return client;
    }

    public static void main(String[] args) throws Exception {
        TransportClient client = getConnection();
        System.out.println("client==" + client.toString());
    }
}

ElasticSearch6(二)-- Java API連接es