【问题标题】:Getting 'No Node Available Exception' while using TrasnsportClient of ElasticSearch使用 ElasticSearch 的 TrasnsportClient 时出现“无节点可用异常”
【发布时间】:2014-07-07 11:53:27
【问题描述】:

我对 Elastic Search 还是很陌生。我的代码中有以下内容,或者在以下场景中寻找“无节点可用异常”问题的解决方案。

    1)我们在具有 1 个节点和 1 个集群的系统上运行 ES。
    2) 我们在 ES 上有 4 个索引。 (每个索引都有不同类型的数据,例如:客户 偏好/客户地址/客户兴趣/客户基本信息)
    3)我们在Tomcat上运行WebApplication(作为webservice)。 4)我们将webservice方法称为Controller的。 - 这将收到来自的请求 JSON 数据形式的消费者。
    5)基于该数据(例如:如果消费者要求提供给定的客户偏好 客户 ID 然后我们转到“客户偏好”索引)我们将转到服务(使用 弹簧)层。
    6)在每个服务层中,我们在 SingleTon 对象中获取 TransportClient 实例和 等待其响应并将结果返回给 Controller。

在一个场景中,如果消费者要求提供客户的所有 4 种类型的数据,并且如果我们首先按顺序要求提供偏好、地址、兴趣和基本详细信息。它运作良好。但这增加了性能。所以我们希望这些东西能够并行处理和获取数据。

所以我们使用 Spring Task Executors 来并行执行此操作。在这种情况下,我们从一个索引中获取数据,而其他索引将得到“无节点可用异常”。说我们得到这个问题的数据是非常随机的。

请帮帮我。

提前致谢!....

【问题讨论】:

  • 可能你连接错了端口
  • 我检查了端口。没错。

标签: java elasticsearch client native transport


【解决方案1】:

在尝试从多个 Web 应用程序将数据写入同一个 ES 节点时,我遇到了类似的问题。我通过为每个节点创建单独的节点来修复它。

建议你试试ES的这些设置

client.transport.sniff=true
sniffOnConnectionFault=true

您还可以在单​​个查询中从 4 个索引中获取数据。 对于客户偏好/客户地址/客户兴趣/客户基本信息。

示例代码:

SearchRequestBuilder srb = client
.prepareSearch("preference_index", "address_index", "interests_index", "details_index")
.setTypes("preference_doc", "address_doc", "interests_doc", "details_doc")
.setSearchType(SearchType.DEFAULT);

QueryBuilder boolBuilder = QueryBuilders.boolQuery().should(
QueryBuilders.matchQuery("id_customer", "14"));

SearchResponse response = srb.setSize(4).execute().actionGet();
SearchHit[] docs = response.getHits().getHits();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多