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

时间:2019-07-17 12:17:41

标签: elasticsearch

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

  

http.port

     

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

     

默认为9200-9300。

假设由于9200已经在使用中,Elasticsearch自动选择端口9202。 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地址?还是根本没关系?

1 个答案:

答案 0 :(得分:1)

RestHighLevelClient是线程安全的,并且在启动时或执行第一个请求时由应用程序实例化。如何“在幕后”完成操作,也许您可​​以签入RestClientBuilder.java here

不确定该问题,但是如果不确定使用哪个端口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