1. 程式人生 > >Elasticsearch的完整安裝目錄以及java程式碼實現

Elasticsearch的完整安裝目錄以及java程式碼實現

啊ElasticSearch的安裝與使用

下載最新版本的ElasticSearch

下載外掛head

4:下載完成後在/elasticsearch-6.4.1/bin目錄下啟動elasticsearch.bat然後

出現以上效果安裝成功

5:解壓head到 elasticsearch-6.4.1資料夾下,

安裝node到elasticsearch-6.4.1資料夾下。

6:開啟 elasticsearch-6.4.1/config/elasticsearch.yml

修該或新增程式碼

node.name: node-1 解開註釋

network.host 解開註釋並把後面改為 0.0.0.0

http.port: 9200 解開註釋

最後在檔案最後新增

http.cors.enabled: true

http.cors.allow-origin: "*"

node.master: true

node.data: true

7:配置環境變數

6、安裝完成檢視結果127.0.0.1:9100,下圖是我建了索引後的,沒建索引時候沒節點 。

建立節點索引之後的狀態

ps:如果關閉了 下次再127.0.0.1:9100之前都要npm run start,才可正常啟動head

 ElasticSearch與java,maven專案的結合 

1:匯入jar包

 <dependencies>
        <!-- Elasticsearch核心依賴包 -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>6.4.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- 日誌依賴 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>

2:建立客戶端

package com.mr;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ElasticsearchTest1 {
private Logger logger = LoggerFactory.getLogger(ElasticsearchTest1.class);
    
    public final static String HOST = "127.0.0.1";
    
    public final static int PORT = 9300;//http請求的埠是9200,客戶端是9300
    
    /**
     * 測試Elasticsearch客戶端連線
     * @Title: test1 
     * @author sunt  
     * @date 2017年11月22日
     * @return void
     * @throws UnknownHostException 
     */
    @SuppressWarnings("resource")
    @Test
    public void test1() throws UnknownHostException {
        //建立客戶端
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
                                 /*new TransportAddresses(InetAddress.getByName(HOST),PORT));*/
        					new TransportAddress(InetAddress.getByName(HOST),PORT));
        
        logger.debug("Elasticsearch connect info:" + client.toString());

        //關閉客戶端
        client.close();
    }
}

3:獲取客戶端連線資訊增刪改查

package com.mr;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.JsonObject;
public class ElasticsearchTest2 {
private Logger logger = LoggerFactory.getLogger(ElasticsearchTest2.class);
    
    public final static String HOST = "127.0.0.1";
    
    public final static int PORT = 9300; //http請求的埠是9200,客戶端是9300
    
    private TransportClient client = null;
    /**
     * 獲取客戶端連線資訊
     * @Title: getConnect 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     * @throws UnknownHostException 
     */
    @SuppressWarnings({ "resource", "unchecked" })
    @Before
    public void getConnect() throws UnknownHostException {
        client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
        		new TransportAddress(InetAddress.getByName(HOST),PORT));
        logger.info("連線資訊:" + client.toString());
    }
    
    /**
     * 關閉連線
     * @Title: closeConnect 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @After
    public void closeConnect() {
        if(null != client) {
            logger.info("執行關閉連線操作...");
            client.close();
        }
    }
    /**
     * 建立索引庫
     * @Title: addIndex1
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     * 需求:建立一個索引庫為:msg訊息佇列,型別為:tweet,id為1
     * 索引庫的名稱必須為小寫
     * @throws IOException 
     */
    @Test
    public void addIndex1() throws IOException {
        IndexResponse response = client.prepareIndex("msg", "tweet", "1").setSource(XContentFactory.jsonBuilder()
                .startObject().field("userName", "張三")
                .field("sendDate", new Date())
                .field("msg", "你好李四")
                .endObject()).get();
        
        logger.info("索引名稱:" + response.getIndex() + "\n型別:" + response.getType()
                    + "\n文件ID:" + response.getId() + "\n當前例項狀態:" + response.status());
    }
    
    
    /**
     * 新增索引:傳入json字串
     * @Title: addIndex2 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void addIndex2() {
        String jsonStr = "{" +
                "\"userName\":\"張三\"," +
                "\"sendDate\":\"2017-11-30\"," +
                "\"msg\":\"你好李四\"" +
            "}";
        IndexResponse response = client.prepareIndex("weixin", "tweet").setSource(jsonStr,XContentType.JSON).get();
        logger.info("json索引名稱:" + response.getIndex() + "\njson型別:" + response.getType()
        + "\njson文件ID:" + response.getId() + "\n當前例項json狀態:" + response.status());
        
    }
    
    /**
     * 建立索引-傳入Map物件
     * @Title: addIndex3 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void addIndex3() {
        Map<String, Object> map = new HashMap<String,Object>();
        map.put("userName", "張三");
        map.put("sendDate", new Date());
        map.put("msg", "你好李四");
        IndexResponse response = client.prepareIndex("momo", "tweet").setSource(map).get();
        logger.info("map索引名稱:" + response.getIndex() + "\n map型別:" + response.getType()
        + "\n map文件ID:" + response.getId() + "\n當前例項map狀態:" + response.status());
    }
    
    
    /**
     * 傳遞json物件
     * 需要新增依賴:gson
     * @Title: addIndex4 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void addIndex4() {
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("userName", "張三");
        jsonObject.addProperty("sendDate", "2017-11-23");
        jsonObject.addProperty("msg","你好李四");
        
        IndexResponse response = client.prepareIndex("qq", "tweet").setSource(jsonObject, XContentType.JSON).get();
        
        logger.info("jsonObject索引名稱:" + response.getIndex() + "\n jsonObject型別:" + response.getType()
        + "\n jsonObject文件ID:" + response.getId() + "\n當前例項jsonObject狀態:" + response.status());
    }
    
    
    /**
     * 更新索引庫資料
     * @Title: updateData 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void updateData() {
        JsonObject jsonObject = new JsonObject();
        
        jsonObject.addProperty("userName", "王五");
        jsonObject.addProperty("sendDate", "2008-08-08");
        jsonObject.addProperty("msg","你好,張三,好久不見");
        
        UpdateResponse updateResponse = client.prepareUpdate("msg", "tweet", "1")
                                        .setDoc(jsonObject.toString(),XContentType.JSON).get();
        
        logger.info("updateResponse索引名稱:" + updateResponse.getIndex() + "\n updateResponse型別:" + updateResponse.getType()
        + "\n updateResponse文件ID:" + updateResponse.getId() + "\n當前例項updateResponse狀態:" + updateResponse.status());
    }
    
    
    
    /**
     * 根據索引名稱,類別,文件ID 刪除索引庫的資料
     * @Title: deleteData 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void deleteData() {
        DeleteResponse deleteResponse = client.prepareDelete("msg", "tweet", "1").get();
        
        logger.info("deleteResponse索引名稱:" + deleteResponse.getIndex() + "\n deleteResponse型別:" + deleteResponse.getType()
        + "\n deleteResponse文件ID:" + deleteResponse.getId() + "\n當前例項deleteResponse狀態:" + deleteResponse.status());
    }
    
    /**
     * 從索引庫獲取資料
     * @Title: getData1 
     * @author sunt  
     * @date 2017年11月23日
     * @return void
     */
    @Test
    public void getData1() {
        GetResponse getResponse = client.prepareGet("msg", "tweet", "1").get();
        logger.info("索引庫的資料:" + getResponse.getSourceAsString());
    }
    
}