c# - 定义应在哪个节点索引上创建多个节点
问题描述
这是我的连接文件
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 调用的节点与决定分片的位置无关
推荐阅读
- java - 如何从序列化的静态对象中派生合同主体?
- python - ImportError:在没有明显原因的情况下尝试了没有已知父包的相对导入
- sql-server - 在 SQL Server 2016 中捕获结果集而不是插入触发器的方法
- javascript - 有没有办法根据它们的长度删除代码的特定元素?
- java - 扫描仪类(system.in)在 android studio 中不起作用,并且 build.gradle 中发生了变化
- python - 使用 matplotlib.widgets 进行交互式绘图的绘图阻塞问题
- python - 从给定的 I 和 D 序列中形成最小数
- c# - 过滤嵌套属性
- java - 文件到字符串空指针异常
- r - R read_excel 读取数值数据不正确