Elasticsearch的完整安裝目錄以及java程式碼實現
阿新 • • 發佈:2018-12-12
啊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());
}
}