java - 使用 ElasticSearch 的 TrasnsportClient 获取 'No Node Available Exception'

标签 java elasticsearch client native transport

我是 Elastic Search 的新手。我的代码中有以下内容,或者在以下情况下寻找“无节点可用异常”问题的解决方案。

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

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

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

请在这里帮助我。

提前致谢!....

最佳答案

当我试图从多个 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();

关于java - 使用 ElasticSearch 的 TrasnsportClient 获取 'No Node Available Exception',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739137/

相关文章:

java - 销毁所有 session 变量而不使 session java无效

java - Spring @RequestMapping,404错误

search - Elasticsearch完成建议者字段包含逗号分隔的值

c - 未知的段错误

java - 我怎样才能在 Android 上反序列化一个非常大的类?

java - 使用 java 8 将列表转换为设置

python - Python Elasticsearch范围查询

elasticsearch - Elasticsearch在索引模板中使用两个映射引发错误

elasticsearch - 从 Golang 查询 ElasticSearch

Java Rest @GET 可以工作,但 @DELETE 和 @POST 路径不会被命中