elasticsearch java操作 api

來源:互聯網
上載者:User

標籤:src   ima   asp   其他   sam   mon   使用者   壓力   tcl   

預設進行了elasticsearch安裝和ik安裝, 逾時配置, 分頁壓力配置等

添加maven依賴

<dependency>              <groupId>org.elasticsearch</groupId>              <artifactId>elasticsearch</artifactId>              <version>2.4.0</version>          </dependency>            <dependency>              <groupId>com.fasterxml.jackson.core</groupId>              <artifactId>jackson-databind</artifactId>              <version>2.1.3</version>   </dependency>  

  注: 因為spring-data-elasticsearch目前只支援到2.4.0, 所以, 暫不使用5.2.0版本

    關於版本控制可見: https://github.com/spring-projects/spring-data-elasticsearch

    

 

第一部分, 使用java操作elasticsearch

  1, 建立一個node節點, 加入叢集中, 通過這個node擷取cilent (不建議使用)

      這種方式相當於建立了一個節點, 不儲存資料, 可通過claspath下的elasticsearch.yml設定, 也可通過編程的方式配置, 

Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.ping_timeout", 1000)                .put("discovery.zen.ping.multicast.enabled", "false").put("timeout", 1)                .putArray("discovery.zen.ping.unicast.hosts", "l-flightdev18.f.dev.cn0.qunar.com:9300", "l-flightdev17.f.dev.cn0.qunar.com:9300")                .build();        Node node = NodeBuilder.nodeBuilder().clusterName("flight_fuwu_order_index").client(true).settings(settings).node();        Client client = node.client();

 

  2, 通過transportClient來串連叢集

    擷取了所有node節點的client, 發送請求時遍曆可用的client, 

Elasticsearch為Java使用者提供了兩種內建用戶端:節點用戶端(node client):節點用戶端以無資料節點(none data node)身份加入叢集,換言之,它自己不儲存任何資料,但是它知道資料在叢集中的具體位置,並且能夠直接轉寄請求到對應的節點上。傳輸用戶端(Transport client):這個更輕量的傳輸用戶端能夠發送請求到遠程叢集。它自己不加入叢集,只是簡單轉寄請求給叢集中的節點。兩個Java用戶端都通過9300連接埠與叢集互動,使用Elasticsearch傳輸協議(Elasticsearch Transport Protocol)。叢集中的節點之間也通過9300連接埠進行通訊。如果此連接埠未開放,你的節點將不能組成叢集。+TIPJava用戶端所在的Elasticsearch版本必須與叢集中其他節點一致,否則,它們可能互相無法識別。

 https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/index.html

下面介紹第二種串連方式: 

 1, 擷取client串連

// 建立用戶端, 使用的預設叢集名, "elasticSearch"        TransportClient client = TransportClient.builder().build()                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.50.37"), 9300));
// 通過setting對象指定叢集配置資訊, 配置的叢集名        Settings settings = Settings.settingsBuilder().put("cluster.name", "wenbronk_cluster") // 設定叢集名                .put("client.transport.sniff", true) // 開啟嗅探                .put("client.transport.ignore_cluster_name", true) // 忽略叢集名字驗證                // .put("client.transport.ping_timeout", 5) // 報錯, ping等待時間,                // 預設5s                // .put("client.transport.nodes_sampler_interval", 5) //報錯,                // 多久開啟串連, 預設5s                .build();        TransportClient client = TransportClient.builder().settings(settings).build();

2, 內建json轉換, 使用靜態匯入

import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder()    .startObject()        .field("user", "kimchy")        .field("postDate", new Date())        .field("message", "trying out Elasticsearch")    .endObject()
String json = builder .string();

3, 

 

elasticsearch java操作 api

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.