定义应使用多个节点创建哪个节点索引

问题描述

这是我的连接文件

         this IServiceCollection services,IConfiguration configuration)
        {
            var  EsNode = configuration["elasticsearch:AcqDataUrl"];

            var NCTNode = configuration["elasticsearch:NCTDataUrl"];

            var nodes = new Uri[]
                {
                    new Uri(EsNode),new Uri(NCTNode)
                };

            var pool = new StaticConnectionPool(nodes);
            var connection = new ConnectionSettings(pool).disableDirectStreaming();
            EsClient = new Elasticclient(connection);
           
            var settings = new IndexSettings { NumberOfReplicas = 1,NumberOfShards = 2 };

            var indexConfig = new IndexState
            {
                Settings = settings
            };

在这里,我想定义应该在哪个节点索引上创建它正在第一个节点上创建索引的多个节点之间的节点[0]或节点[1]

           {
               EsClient.Indices.Create(configuration["elasticsearch:AcquiringIndex"],c => c
                 .InitializeUsing(indexConfig)
                 .Mappings(m => m.Map<Acquirer>(mp => mp.AutoMap())));

           }
           if (!EsClient.Indices.Exists(configuration["elasticsearch:ElasticR&dindex"]).Exists)
           {
               EsClient.Indices.Create(configuration["elasticsearch:ElasticR&dindex"],c => c
                 .InitializeUsing(indexConfig)
                 .Mappings(m => m.Map<Employee>(mp => mp.AutoMap())));

           }
           if (!EsClient.Indices.Exists(configuration["elasticsearch:NetConnectTransactionIndex"]).Exists)
           {
               EsClient.Indices.Create(configuration["elasticsearch:NetConnectTransactionIndex"],c => c
               .InitializeUsing(indexConfig)
               .Mappings(m => m.Map<TransactionDto>(mp => mp.AutoMap())));

           }

           services.AddSingleton<IElasticclient>(EsClient);

       }

我想从Singleton开始传递两个连接,并在Startup.cs中调用它,因为它将在继承Controller的类中用于进一步的查询

解决方法

如果创建的索引具有2个主分片和1个副本,并且有2个数据节点,则两个节点上将分别具有分片[0]和分片[1](因为每个分片都有2个副本-副本无法站在同一节点上) 接收CREATE INDEX API调用的节点与确定分片的位置无关

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...