在 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 将创建索引并根据它看到的第一个文档推断文档的映射。这 可以 有用,但通常对于搜索用例,您希望明确控制文档的映射以应用特定的分析器等,因此使用您想要的映射创建索引是首选方法。