【问题标题】:Defining on which node index should be created with multiples nodes定义应在哪个节点索引上创建多个节点
【发布时间】:2020-09-17 14:00:24
【问题描述】:

这是我的连接文件

         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 的类中用于进一步查询

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    如果您创建了一个包含 2 个主分片和 1 个副本的索引并且有 2 个数据节点,那么您将在两个节点上都有分片 [0] 和分片 [1](因为每个分片有 2 个副本 - 和副本不能站在同一个节点上) 接收 CREATE INDEX API 调用的节点与决定分片的位置无关

    【讨论】:

    • 你能忽略分片和副本吗?我想用c#方式用transient来做,你能给我一些材料吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多