elasticsearch連線java的開發流程
阿新 • • 發佈:2018-12-15
今天終於爬坑,把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的一個教程連線貼出來,他寫的還是很詳細的。