【问题标题】:What is the difference between ElasticSearch API through 9300 vs 9200 port?通过 9300 和 9200 端口的 ElasticSearch API 有什么区别?
【发布时间】:2017-06-01 07:37:26
【问题描述】:

我通过 9200 端口使用 ElasticSearch REST API。

官方Java库客户端连接9300端口。

端口API有什么区别?

我想将日志事件传递到 ElasticSearch 并查看 Bulk API:

最困扰我的是通过PreBuiltTransportClient 的Java API 带来了很多依赖,如果将客户端插入应用程序,这完全是不必要的开销(为什么我需要在应用程序中使用org.apache.lucene jars??)。

是否有任何性能差异,它们是否提供相同级别的可靠性?

【问题讨论】:

    标签: elasticsearch bulkinsert


    【解决方案1】:

    Here

    java 客户端为弹性创建一个传输节点客户端,并通过传输模块连接到集群(不是功能齐全的节点),而不是整齐地在 9200 端口上工作。所以它回退到端口 9300 连接到 ES 的传输层。

    TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));
    

    弹性侦听端口 9300 上的所有 transport 请求,甚至其他节点。

    【讨论】:

    • 你的意思是9300是集群的发现和控制端口,而9200是请求的公共API端口?我不明白在 9300 端口上使用 Java 客户端进行批量插入而不是在 9200 上使用 REST 的好处。
    • 9200 是弹性的 rest http 端口,是的 9300 是发现和传输模块端口。对于批量索引,它可能有助于提高性能,因为它可以直接连接到数据节点以将数据导入集群,而不是通过 http 端口发送批量数据。 Elastic 的 C# 客户端还可以通过创建虚拟传输客户端节点来保存为 java。
    • Elasticsearch 文档中提供了有关发现过程的详细信息:elastic.co/guide/en/elasticsearch/reference/7.5/…
    【解决方案2】:

    如果您使用的是 Java,则可以使用 Transport Client 使用二进制协议在端口 9300 上与 Elasticsearch 通信。传输客户端现已弃用 - 无论如何您都应该使用 REST API,因为它具有更好的向后兼容性,并且无论如何都没有显着的性能优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2015-03-03
      • 2019-10-16
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多