elasticsearch - 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
推荐阅读
- python - 删除明确定义了块的开头和结尾的句子块
- javascript - 如何在 Node.js 中的主进程和子进程之间传递流输入/输出
- android - 如何建立表之间的关系
- c++ - SDL_image.h 不工作,#include "sdl.h" :没有这样的文件或目录
- nuxt.js - 当我运行 nuxt porject 时,出现应用程序崩溃错误
- pyspark - 将结构数组分解为 pyspark 中的列
- reactjs - 无法使用来自 axios 请求的 request.form 在烧瓶 api 中获取请求正文
- html - 将多个 div 组合并对齐为一个形状
- c++ - 脚本运行后引用 lua 表/对象
- crystal-reports - 水晶报13 Oracle连接问题