在 NEST 中使用映射进行批量更新
Bulk update with mapping in NEST
我正在通过以下方式创建带有映射的索引:
_elasticClient.Indices.Create(name, c => c.Map(/* omitted for brevity */));
_elasticClient.BulkAll(data, b => b
.Index(name)
.BackOffTime("30s")
.BackOffRetries(2)
.RefreshOnCompleted()
.MaxDegreeOfParallelism(Environment.ProcessorCount)
.Size(50)).Wait(TimeSpan.FromMinutes(15), _ => { });
_elasticClient.Indices.PutAlias(name, Alias);
我只是想了解批量更新的工作原理并确保我正确执行此操作。即使我删除 _elasticClient.Indices.Create
,似乎仍会创建一个索引。如果索引不存在,POST 到 index_v1/_bulk
是否会创建索引,但如果我首先在第一行创建它,是否会用数据更新它?
默认情况下,如果数据被索引到一个尚不存在的索引中,Elasticsearch 将创建索引并根据它看到的第一个文档推断文档的映射。这 可以 有用,但通常对于搜索用例,您希望明确控制文档的映射以应用特定的分析器等,因此使用您想要的映射创建索引是首选方法。
我正在通过以下方式创建带有映射的索引:
_elasticClient.Indices.Create(name, c => c.Map(/* omitted for brevity */));
_elasticClient.BulkAll(data, b => b
.Index(name)
.BackOffTime("30s")
.BackOffRetries(2)
.RefreshOnCompleted()
.MaxDegreeOfParallelism(Environment.ProcessorCount)
.Size(50)).Wait(TimeSpan.FromMinutes(15), _ => { });
_elasticClient.Indices.PutAlias(name, Alias);
我只是想了解批量更新的工作原理并确保我正确执行此操作。即使我删除 _elasticClient.Indices.Create
,似乎仍会创建一个索引。如果索引不存在,POST 到 index_v1/_bulk
是否会创建索引,但如果我首先在第一行创建它,是否会用数据更新它?
默认情况下,如果数据被索引到一个尚不存在的索引中,Elasticsearch 将创建索引并根据它看到的第一个文档推断文档的映射。这 可以 有用,但通常对于搜索用例,您希望明确控制文档的映射以应用特定的分析器等,因此使用您想要的映射创建索引是首选方法。