elasticsearch 使用NEST 5.x创建Elasticsearch索引
我正在尝试使用NEST 5.x预发布版本为Elasticsearch 5.x创建索引。我有来自2.x的示例,它展示了如何使用ElasticClient.CreateIndex方法创建索引。下面是我的示例代码
elasticsearch 使用NEST 5.x创建Elasticsearch索引,
elasticsearch,nest,
elasticsearch,Nest,我正在尝试使用NEST 5.x预发布版本为Elasticsearch 5.x创建索引。我有来自2.x的示例,它展示了如何使用ElasticClient.CreateIndex方法创建索引。下面是我的示例代码 ESnode = new Uri("http://localhost:9200"); Nodesettings = new ConnectionSettings(ESnode); Client = new ElasticClient(Nodesettings); 但是,当我在下面键入时,没
ESnode = new Uri("http://localhost:9200");
Nodesettings = new ConnectionSettings(ESnode);
Client = new ElasticClient(Nodesettings);
但是,当我在下面键入时,没有可用的自动完成功能
Client.CreateIndex( c => c.
我能够使用下面的代码成功地获取节点的运行状况
var res = Client.ClusterHealth();
Console.WriteLine("Status:" + res.Status);
我有一个复杂的文档映射,我已经为它定义了类结构,并打算使用Automap方法。因此,我尝试以编程方式创建索引,以避免手动创建索引
我尝试使用一些非常旧的NEST(1.x)版本,我能够获得createIndex的自动完成。但是v2.4x和5.x都没有提供自动完成功能。有没有新的方法来创建索引?请让我知道
谢谢除了提供额外索引创建选项的代理之外,您还需要为索引提供名称
var createIndexResponse = client.CreateIndex("index-name", c => c
.Settings(s => s
.NumberOfShards(1)
.NumberOfReplicas(0)
)
.Mappings(m => m
.Map<Conference>(d => d
.AutoMap()
)
)
);
var createIndexResponse=client.CreateIndex(“索引名”,c=>c
.Settings(s=>s
.NumberOfShard(1)
.numberofreplications(0)
)
.Mappings(m=>m
.Map(d=>d
.AutoMap()
)
)
);
谢谢你,罗斯。我正准备删除这个问题,因为我是通过试验得出的结论。我能够创建索引。但我还有第二个问题。当我使用Automap时,即使嵌套属性也被映射为简单属性。另外,我注意到的第二个问题是,所有属性都是按属性名排序的(当我尝试GET映射时)。如何更正这些?使用.AutoMap()
时,默认情况下,CLR类型将映射为对象
字段映射(嵌套中已知的除外,例如附件
类型)。为了映射为嵌套的类型,您需要使用.Properties()
覆盖自动映射。关于json中的属性名称,它们永远不能保证在json中以任何特定顺序排列,因此不应依赖顺序。