日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Transport Client(5.x)

您可以通過Transport Client 5.3.3訪問阿里云Elasticsearch 5.x版本的實例。本文介紹相關配置說明。

注意事項

  • 建議您使用5.3.3版本的Transport Client來訪問Elasticsearch集群。使用5.5或5.6版本訪問Elasticsearch集群會提示NoNodeAvailableException的錯誤。

  • 由于Transport Client通過TCP與Elasticsearch進行通信,因此當客戶端與不同版本的Elasticsearch通信時會存在兼容性問題,所以官方在高版本集群中已棄用Transport Client。建議優先使用Java Low Level REST Client來訪問Elasticsearch集群,以保障版本的兼容性。

準備工作

  • 安裝Java,要求JDK版本為1.8及以上。

    安裝方法請參見安裝JDK。

  • 創建阿里云Elasticsearch實例,版本為5.5.3。

    創建方法請參見創建阿里云Elasticsearch實例。

  • 開啟阿里云Elasticsearch實例的自動創建索引功能。

    具體操作步驟請參見配置YML參數。

    如果未開啟會提示如下報錯。報錯

  • 配置阿里云Elasticsearch實例的白名單,確保網絡互通。

    • 如果運行Java代碼的服務器在公網環境下,可通過阿里云Elasticsearch實例的公網地址進行連通。連通前,需要開啟阿里云Elasticsearch實例的公網地址,并修改公網地址訪問白名單,將服務器的公網IP地址加入白名單中。具體操作步驟請參見配置實例公網或私網訪問白名單

      重要
      • 如果您的客戶端處在家庭網絡或公司局域網中,您需要將局域網的公網出口IP地址添加到白名單中,而非客戶端機器的內網地址。建議您通過瀏覽器訪問cip.cc獲取您當前使用的公網IP地址。

      • 您也可以將白名單配置為0.0.0.0/0,允許所有IPv4地址訪問阿里云Elasticsearch實例。此配置會導致實例完全暴露在公網中,增加安全風險,配置前請確認您是否可以接受這個風險。

      • 如果未配置白名單或白名單配置錯誤,系統會提示連接超時報錯(Timeout connecting)。

      • 如果您需要通過客戶端訪問Kibana節點,還需要配置Kibana的訪問白名單,詳細信息請參見配置Kibana公網或私網訪問白名單

    • 如果運行Java代碼的服務器與阿里云Elasticsearch實例在同一專有網絡VPC(Virtual Private Cloud)中,可通過阿里云Elasticsearch實例的私網地址進行連通。連通前,需要確保VPC私網訪問白名單(默認為0.0.0.0/0)中已添加了服務器的內網IP地址。

  • 創建Java Maven工程,并將下文的pom依賴添加到Java工程的pom.xml文件中。

pom依賴

<repositories>
    <!-- add the elasticsearch repo -->
    <repository>
        <id>elasticsearch-releases</id>
        <url>https://artifacts.elastic.co/maven</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>5.3.3</version>
     </dependency>
     <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.3.3</version>
     </dependency>
     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7.1</version>
     </dependency>
     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7.1</version>
     </dependency>
</dependencies>
重要

Log4j可能存在遠程代碼執行漏洞,詳細信息請參見漏洞公告 | Apache Log4j2遠程代碼執行漏洞。

示例

單擊下載完整示例代碼。

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import static org.elasticsearch.common.xcontent.XContentFactory.*;

import java.net.InetAddress;

public class TransportClientDemo {

    public static void main(String[] args) {
        try {
            TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
                    .put("cluster.name", "es-cn-n6w1rux8i000w****") //替換為對應阿里云ES實例的ID。
                    .put("xpack.security.user", "elastic:es_password") //阿里云ES實例的用戶名、密碼。
                    .put("client.transport.sniff", false) //設置sniff為false。
                    .build())
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com"), 9300));//指定域名及端口,替換為對應阿里云ES實例的域名。

            //下面這段代碼可以根據實際情況進行修改,指定index,type及文檔id。
            IndexResponse idxResp3 = client.prepareIndex("test_index", "test_type", "333")
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("user_id", "333")
                            .field("email", "a***@aliyun.com")
                            .endObject()
                    )
                    .get();

            System.out.println(idxResp3.toString());


            GetResponse getResp =
                    client.prepareGet().setIndex("test_index").setType("test_type").setId("333").execute().get();
            System.out.println(getResp.getSourceAsString());
            client.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

參數

描述

cluster.name

阿里云Elasticsearch實例的ID,可在實例的基本信息頁面獲取,獲取方法請參見查看實例的基本信息。

client.transport.sniff

嗅探,請設置為false。

xpack.security.user

訪問阿里云Elasticsearch實例的用戶名和密碼。用戶名默認為elastic。elastic用戶的密碼在創建實例時設定,如果忘記可重置。重置密碼的注意事項和操作步驟,請參見重置實例訪問密碼

InetAddress.getByName()

請在此方法的參數中指定訪問阿里云Elasticsearch實例的域名及端口號。

重要

域名不能加http。