当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch索引不工作,错误消息:节点null不是群集的一部分[Elasticsearch],忽略

佴博实
2023-03-14

我刚刚下载了弹性搜索发行版并运行了它。

curl 'localhost:9200'

{
   "status" : 200,
   "name" : "cbs",
   "cluster_name" : "elasticsearch",
   "version" : {
   "number" : "1.4.1",
   "build_hash" : "89d3241d670db65f994242c8e8383b169779e2d4",
   "build_timestamp" : "2014-11-26T15:49:29Z",
   "build_snapshot" : false,
   "lucene_version" : "4.10.2"
    },
  "tagline" : "You Know, for Search"
}

我正在尝试使用spring-data访问它。使用xml命名空间在应用程序上下文中添加了以下行(根据Spring数据留档):

<elasticsearch:repositories base-package="com.cbs" />
<elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300" cluster-name="elasticsearch" />
<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
    <constructor-arg name="client" ref="client" />
</bean>

这是实体和存储库代码:

@org.springframework.data.elasticsearch.annotations.Document(indexName = "product", type = "product", shards = 1, replicas = 0, indexStoreType = "memory", refreshInterval = "-1")
public class Product {
    @Id
    private String id;    
    private String name;
}


@Repository
public class ProductSearchDaoImpl implements IProductSearchDao {
@Autowired
private ElasticsearchOperations elasticsearchOperations;

@Override
public void index(Product product) {
    elasticsearchOperations.createIndex(Product.class);
    elasticsearchOperations.putMapping(Product.class);
    IndexQuery indexQuery = new IndexQueryBuilder().withId(product.getId()).withObject(product).build();
    elasticsearchOperations.index(indexQuery);
    elasticsearchOperations.refresh(Product.class, true);
}
}

现在,当我运行测试用例为产品编制索引时,我会收到一条一致的警告消息(大约每2秒一次),如下所示

[Neuronne] node null not part of the cluster Cluster [elasticsearch], ignoring...
[Neuronne] node null not part of the cluster Cluster [elasticsearch], ignoring...

而且产品没有索引(甚至没有创建索引)

curl 'localhost:9200/_cat/indices?v'
health status index    pri rep docs.count docs.deleted store.size pri.store.size 

有人能帮我解决这个问题吗?

共有2个答案

晁文斌
2023-03-14

为了试验,我在我的dev elasticsearch服务器上更改了名称,但忘记了。

客户端上的错误消息没有太大帮助,TransportClientNodeService与远程名称进行了比较,但实际上没有在日志中写入远程名称(“群集名称”)。

使用以下Spring配置可以绕过名称检查:

我的决议是:

  • 更改群集的名称。elasticsearch服务器中的名称

我都去了,这是我的Spring配置,希望它能有所帮助:

spring:
    ...
    data:
    elasticsearch:
        # Defaults to cluster-name 'elasticsearch'
        cluster-name:
        cluster-nodes: 127.0.0.1:9300
        properties:
            # https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
            client.transport.ignore_cluster_name: true
白烨煜
2023-03-14

对于遇到相同错误并从搜索引擎来到这里的人,请确保TransportClient使用与集群本身相同的集群名称。

  1. 验证群集名称

访问http://localhost:9200检查集群名称。默认名称是elasticsearch。如果您使用elasticsearch.yml文件自定义集群名称,请确保选择配置文件。

设置culster。创建TransportClient时命名。

Settings settings = ImmutableSettings.settingsBuilder()
        .put("cluster.name", clusterName)
        .put("client.transport.ignore_cluster_name", false)
        .put("node.client", true)
        .put("client.transport.sniff", true)
        .build();
client = new TransportClient(settings).addTransportAddress(new  InetSocketTransportAddress(host, port)); 

忽略群集名称检查

通过设置客户端,可以忽略对集群名称的检查。运输忽略\u cluster\u name到true。

如果错误仍然存在,请在调试模式下启动应用程序,然后调试TransportClientNodeService。

 类似资料:
  • 本文向大家介绍ElasticSearch中的集群、节点、索引、文档、类型是什么?相关面试题,主要包含被问及ElasticSearch中的集群、节点、索引、文档、类型是什么?时的应答技巧和注意事项,需要的朋友参考一下 群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为

  • 问题内容: 好的,这应该不难,我试图在Elasticsearch集群中运行2个节点,并在尝试启动node-1(作为主节点的node-2已经启动)时遇到异常。对两个实例都使用elasticsearch v 5.0.0 例外: 无法将加入请求发送到主节点,原因是RemoteTransportException无法添加找到的具有相同ID但却是不同节点实例的现有节点的节点] 节点1配置: 节点名称:SAN

  • 问题内容: 我有弹性簇,其中我的索引包含当前日期-例如: 是否可以跨多个索引查询,而忽略不存在的索引。例如,这 WORKS : 而这 会返回404 : 我希望第二个示例仅从25日起返回文档。 问题答案: 如果您使用通配符,则无需担心,ES会找出匹配的索引。 如果您真的想枚举索引,可以在调用中指定: 或者,您也可以使用索引别名并仅查询该别名。在创建新索引时,您还将该别名添加到索引中。这样做的好处是您

  • 问题内容: 我正在围绕ElasticSearch的管理客户端编写一个简单的Java包装器。为了测试它,我有一个主要方法,该方法首先检查索引是否存在(IndicesExistsRequest),如果存在则将其删除(DeleteIndexRequest),然后再次创建索引。请参见下面的代码。但是我一直得到IndexAlreadyExistsException。 顺便说一句,我正在尝试为您从命令提示符启

  • 尝试在magento 2.4中搜索产品时返回以下错误 异常#0(Elasticsearch\Common\Exceptions\NoNodes可用性异常):在集群中找不到活动节点 以下配置: PHP 7.4.1 Nginx 1.14 MySql 8 ElasticSearch 7.9 /etc/nginx/conf.d/100-magento2.conf /etc/nginx/conf.d/90-

  • 问题内容: 我已经安装了Elasticsearch 2.2.3并在2个节点的集群中进行了配置 节点1(elasticsearch.yml) 节点2(elasticsearch.yml) 如果我知道我有: 进入节点1的日志有: 改为进入节点2的日志: 哪里出错? 问题答案: 我解决了这一行: 每个配置文件的主机名都必须带有此行