Elasticsearch:如何知道默认 9200 已在使用时使用的 HTTP 端口号



在 Elasticsearch 文档中指定了有关 http.port 配置的以下内容:

http.port

传入 HTTP 请求要绑定到的端口。接受单个值或范围。如果指定了范围,则节点将绑定到该范围中的第一个可用端口。

默认值为 9200-9300。

假设 Elasticsearch 自动选择端口 9202,因为 9200 已经在使用中。Java 客户端应用程序如何知道选择了哪个端口,并且必须使用哪个端口来创建 RestHighLevelClient 对象?有没有办法查询可以提供端口号信息的其他服务?

提前谢谢。

<小时 />

更新

在第一个答案之后,我尝试通过执行以下命令在 Windows 计算机(生产环境)中重现这些步骤:

> tasklist | findstr "elasticsearch"
elasticsearch-service-x64     2232 Services                   0    537,764 K
> netstat -aon | find /i "2232"
TCP    0.0.0.0:9200           0.0.0.0:0              LISTENING       2232
TCP    0.0.0.0:9300           0.0.0.0:0              LISTENING       2232
TCP    127.0.0.1:9200         0.0.0.0:0              LISTENING       2232
TCP    127.0.0.1:9300         0.0.0.0:0              LISTENING       2232
TCP    127.0.0.1:49201        127.0.0.1:49202        ESTABLISHED     2232
TCP    127.0.0.1:49202        127.0.0.1:49201        ESTABLISHED     2232
TCP    127.0.0.1:49203        127.0.0.1:49204        ESTABLISHED     2232
TCP    127.0.0.1:49204        127.0.0.1:49203        ESTABLISHED     2232
TCP    127.0.0.1:49205        127.0.0.1:49206        ESTABLISHED     2232
TCP    127.0.0.1:49206        127.0.0.1:49205        ESTABLISHED     2232
...
TCP    127.0.0.1:49275        127.0.0.1:49276        ESTABLISHED     2232
TCP    127.0.0.1:49276        127.0.0.1:49275        ESTABLISHED     2232
TCP    [::1]:9200             [::]:0                 LISTENING       2232
TCP    [::1]:9300             [::]:0                 LISTENING       2232

结果显示了使用 9200 端口 (http.port) 的几行:

TCP    0.0.0.0:9200           0.0.0.0:0              LISTENING       2232
TCP    127.0.0.1:9200         0.0.0.0:0              LISTENING       2232
TCP    [::1]:9200             [::]:0                 LISTENING       2232

如果我必须解析该结果以获取端口号,我应该查找哪些 IP 地址?或者根本不重要?

RestHighLevelClient是线程安全的,它由应用程序在启动时或执行第一个请求时实例化。它是如何"在引擎盖下"完成的,也许你可以在这里签到RestClientBuilder.java

不确定这个问题,但如果您不确定ES正在使用哪个端口,可以检查一下

[root@myserver ~]# service elasticsearch status
elasticsearch (pid  5384) is running...
## netstat on pid
[root@myserver~]# netstat -plunt | grep 5384
tcp        0      0 ::ffff:10.100.14.146:9300   :::*                        LISTEN      5384/java
tcp        0      0 ::ffff:10.100.14.19:9200    :::*                        LISTEN      5384/java
tcp        0      0 ::ffff:127.0.0.1:9200       :::*                        LISTEN      5384/java

最新更新