elasticsearch 将类型名称传递给ElasticClient对象嵌套,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 将类型名称传递给ElasticClient对象嵌套,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 将类型名称传递给ElasticClient对象嵌套

elasticsearch 将类型名称传递给ElasticClient对象嵌套,elasticsearch,nest,elasticsearch,Nest,我用自定义映射创建索引我的问题是与索引(如索引)相对应的方法,ElasticClientonly的createindex等仅获取索引名称作为输入参数,并从作为泛型参数传递给它们的类的名称中识别类型名称是否有任何方法将类型名称传递给ElasticClient方法(例如createindex方法)并强制其接受,而不是使用类名 这是我的部分代码 var qq = Elasticclient.CreateIndex("testindex", a => a.Mappings(f => f.

我用自定义映射创建索引我的问题是与索引(如索引)相对应的方法,ElasticClientonly的createindex等仅获取索引名称作为输入参数,并从作为泛型参数传递给它们的类的名称中识别类型名称是否有任何方法将类型名称传递给ElasticClient方法(例如createindex方法)并强制其接受,而不是使用类名

这是我的部分代码

  var qq = Elasticclient.CreateIndex("testindex", a => a.Mappings(f => f.Map<BankPaymentLogModel>(
                          b => b.Properties(c => c.String(d => d.Name(e => e.testProperty))

                       ))));

如果有任何帮助,我们将不胜感激。

有几个选项可供您选择,用于为从POCO名称推断出的一个嵌套指定不同的类型名称

1.使用MapTypeName类型,Func>重载

var createIndexResponse = client.CreateIndex("testindex", a => a
    .Mappings(f => f
        .Map<BankPaymentLogModel>("my-type", b => b
            .Properties(c => c
                .String(d => d
                    .Name(e => e.testProperty)
                )
            )
        )
    )
);
3.或者,如果您不喜欢属性,可以在BankPaymentLogModel的ConnectionSettings上配置默认类型名称

[ElasticsearchType(Name = "my-type")]
public class BankPaymentLogModel
{
    public string testProperty { get; set; }
}

var createIndexResponse = client.CreateIndex("testindex", a => a
    .Mappings(f => f
        .Map<BankPaymentLogModel>(b => b
            .Properties(c => c
                .String(d => d
                    .Name(e => e.testProperty)
                )
            )
        )
    )
);
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var connectionSettings = new ConnectionSettings(pool)
    .InferMappingFor<BankPaymentLogModel>(m => m
        .TypeName("my-type")
    );

var client = new ElasticClient(connectionSettings);

var createIndexResponse = client.CreateIndex("testindex", a => a
    .Mappings(f => f
        .Map<BankPaymentLogModel>(b => b
            .Properties(c => c
                .String(d => d
                    .Name(e => e.testProperty)
                )
            )
        )
    )
);
PUT http://localhost:9200/testindex
{
  "mappings": {
    "my-type": {
      "properties": {
        "testProperty": {
          "type": "string"
        }
      }
    }
  }
}