[2022-02-16T21:08:50,085][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-VCT39JM] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/[0:0:0:0:0:0:0:1]:9200, remoteAddress=/[0:0:0:0:0:0:0:1]:1172}
是因為開啟了 ssl 認證。
在 ES/config/elasticsearch.yml 文件中把 xpack.security.http.ssl:enabled
設(shè)置成 false
即可
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
windows 下直接啟動 ElasticSearch ,見到 started 為成功啟動,訪問 htttp://localhost:9200 需要輸入密碼,是因為開啟了密碼驗證模式。
找了一輪沒看到有賬號密碼,干脆就設(shè)置免密登錄就好。
找到 elasticsearch.yml
文件, 把 xpack.security.enabled
屬性設(shè)置為 false
即可。
# Enable security features
xpack.security.enabled: false
ES 的內(nèi)存是自己調(diào)節(jié)的。在 config/jvm.options
文件中直接設(shè)置就好(追加):
-Xms512m
-Xmx2048m
ES 在 windows 中只允許打開一個應(yīng)用程序,當你再想去創(chuàng)建一個 ES 應(yīng)用程序的時候,就會顯示 Permission denied
,即使是使用 cmd 管理員運行 elasticsearch.bat 文件
也是一樣的錯誤。
public static void main(String[] args) throws IOException {
// 創(chuàng)建 ES 客戶端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost(Constants.HOST, Constants.PORT, Constants.HTTP))
);
client.close();
}
通過上述代碼,使用 RestHighLevelCilent 訪問 ES 客戶端的時候,出現(xiàn)以下錯誤:Exception in thread "main" java.lang.UnsupportedClassVersionError:
org/elasticsearch/action/ActionRequest has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
看到注釋,我們知道是版本不兼容的問題,查找資料看到這樣一個表:
Major version numbers map to Java versions:
45 = Java 1.1
46 = Java 1.2
47 = Java 1.3
48 = Java 1.4
49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
講道理在這個版本任你發(fā),我用Java8
的年代,RestHighLevelClient 肯定是兼容Java 8 的,那么就只有 ES 版本太高了,把 pom.xml
的 ES 依賴版本
降到跟 elasticsearch-rest-high-level-client
一樣就可以了
<properties>
<elasticsearch.version>7.17.0</elasticsearch.version> <elasticsearch.client.version>7.17.0</elasticsearch.client.version>
</properties>
<dependies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elasticsearch.client.version}</version>
</dependency>
</dependies>
pom.xml
的 elasticsearch
和 elasticsearch-rest-high-level-client
版本一致即可。