在ElasticSearch留档中指定了以下关于http.port配置:
http。港口城市
用于绑定传入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
我试图在开发Spring Boot应用程序时创建一个本地kibana/elastic堆栈。当我将应用程序作为单个容器启动时,我可以成功地将其连接到elastic: 所以我尝试启动提供的堆栈docker docker compose文件,可在此处找到:https://github.com/elastic/stack-docker 一切似乎都很好,我可以在localhost:5601上连接到kiban
在阅读TCP的工作原理时,我读了很多书,其中提到在客户端连接到服务器后,套接字程序员应该调用accept(),以接受来自客户端的连接。然后,父TCP服务器进程(在端口上侦听,比如说80)调用一个fork(),并将创建一个子进程,该子进程将继续与客户端通信。子进程显然必须绑定到另一个临时端口才能与客户端通信。我的问题是,一旦子进程分叉,客户端如何知道将数据发送到哪个端口以便进行通信?侦听端口80的父
问题内容: 我在数据库中有一列,默认值为。我正在寻找一种方法来插入该默认值,而我并未向应用程序端的相应属性提供任何东西。顺便说一句,我正在使用基于注释的配置。 有什么建议吗? 问题答案: 即使将date列定义为dbms端,date列在插入时仍会得到值的原因是,仅当在查询中未为该列提供值时,才使用该列的值。这意味着即使已经给出了它也不能出现在句子中。 如果要在DBMS端使用,则应配置with ,以使
我下载了詹金斯。war文件并运行命令java-jar-jenkins。我的war文件目录中的war。它在默认端口8080上启动了Jenkins,但现在我想更改Jenkins的默认端口,因为我正在端口8080上运行tomcat。我没有找到任何詹金斯。my C中的xml文件:/User/Username/。詹金斯文件夹。在这种情况下,如何更改Jenkins的默认端口?
问题内容: 当搜寻通过Java语言规范来回答这个问题),我学到的是 在初始化类之前,必须先初始化其直接超类, 但不初始化由该类实现的接口。 同样,在初始化接口之前,不会初始化接口的超级接口。 出于我自己的好奇心,我尝试了一下,并且未如预期的那样对接口进行了初始化。 该程序打印 但是,如果接口声明了一个方法,则确实会发生初始化。考虑给定的接口 然后上面的相同程序将打印 换句话说,接口的字段已初始化(
但当我给它“0”端口时,它在addrinfo结果中保持“0”,这导致每个绑定给我不同的端口号。 我的问题:有没有一种方法告诉getaddrinfo选择一个在所有接口上都是空闲的自由端口,然后将给定的地址绑定到所有接口? 如果没有,有没有其他方法可以找到自由端口号?(不绑定,失败时停止)