elasticsearch 使用NEST 5.x创建Elasticsearch索引,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 使用NEST 5.x创建Elasticsearch索引,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 使用NEST 5.x创建Elasticsearch索引

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); 但是,当我在下面键入时,没

我正在尝试使用NEST 5.x预发布版本为Elasticsearch 5.x创建索引。我有来自2.x的示例,它展示了如何使用ElasticClient.CreateIndex方法创建索引。下面是我的示例代码

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中以任何特定顺序排列,因此不应依赖顺序。