1. 程式人生 > >elasticsearch連線java的開發流程

elasticsearch連線java的開發流程

今天終於爬坑,把elasticsearch連線java測試跑通了,搜尋那麼多,走那麼多彎路,哎!不說了, 自己仔細把走過的路記下來, 讓自己和大家都少走彎路。

1、用maven專案搭建工程: 要注意的是, 你的elasticsearch是什麼版本的, maven下載的那個jar也得對應該版本, 否則會報錯:例如,我的是elasticsearch5.2.0,那麼我的下載的版本也是5.2.0

 <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>5.2.0</version>
 </dependency>

必須要一致哦,再次提醒。

pom檔案的完整依賴

<dependencies>
   <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.8.2</version>
    </dependency>
    <!-- 日誌依賴 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
      <scope>compile</scope>
    </dependency>
    <!-- Google json依賴 -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>
    <!-- elasticsearch依賴 -->
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>5.2.0</version>
    </dependency>

  </dependencies>

這些新增完成後,等待下載依賴完成, 就可以進行連結,建立索引了

其中要注意的是:logger報錯也沒事, host 在設定的時候,如果是連的本地的,就寫成“127.0.0.1”,

如果需要遠端訪問,可以修改 Elastic 安裝目錄的config/elasticsearch.yml檔案,去掉network.host的註釋,將它的值改成0.0.0.0,然後重新啟動 Elastic。

例如:

network.host: 0.0.0.0      

下面把java連線elasticsearch的程式碼貼出來,很簡單:

package com.test;

import java.io.IOException;
import java.net.InetAddress;
import java.util.Date;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class EsTest {

    /**
     *  // 伺服器地址
     */
    private static String host="127.0.0.1";
    /**
     *  // 埠
     */
    private static int port=9300;
    /**
     * 建立logger
     */
    private  Logger logger = LoggerFactory.getLogger(EsTest.class);


    public static void main(String[] args) throws IOException{
        /**
         * 建立連結
         */
        TransportClient    client2 = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
                new InetSocketTransportAddress(InetAddress.getByName(host),port));


        System.out.println("連線資訊:" + client2.toString());
        IndexResponse response = client2.prepareIndex("msg", "tweet", "2").setSource(XContentFactory.jsonBuilder()
                .startObject().field("userName", "張三")
                .field("sendDate", new Date())
                .field("msg", "你好李四")
                .endObject()).get();


        System.out.println("索引名稱:" + response.getIndex() + "\n型別:" + response.getType()
                + "\n文件ID:" + response.getId() + "\n當前例項狀態:" + response.status());

        /**
         * 關閉連線
         */
        client2.close();
    }
}

在這裡, 我把引入的包名都貼上去, 這樣在寫的時候,可以直接複製上面的引入, 防止引入錯誤的jar。

執行後的結果:

這個例項就被建立好了, 可以看到的是例項狀態是:created.

最後把elasticsearch的一個教程連線貼出來,他寫的還是很詳細的。