elasticsearch 如何将类属性转换为大写,并在使用c的elasticsearch中重命名少数不带属性的属性#
我在C#中使用elasticsearch将一些数据放入elasticsearch。我已根据数据库(PascalCase)保存了我的C#类和属性。但是,我的要求是将所有属性转换为大写,并将少数属性的名称更改为另一个名称。类名也可以使用相同的名称 我不想通过数据注释来实现这一点。有没有什么方法可以使所有C类都通用 我使用的是NEST 5.X版本 比如说,elasticsearch 如何将类属性转换为大写,并在使用c的elasticsearch中重命名少数不带属性的属性#,elasticsearch,nest,elasticsearch,Nest,我在C#中使用elasticsearch将一些数据放入elasticsearch。我已根据数据库(PascalCase)保存了我的C#类和属性。但是,我的要求是将所有属性转换为大写,并将少数属性的名称更改为另一个名称。类名也可以使用相同的名称 我不想通过数据注释来实现这一点。有没有什么方法可以使所有C类都通用 我使用的是NEST 5.X版本 比如说, class Foo { public string thisMessage {get; set; } public stri
class Foo
{
public string thisMessage {get; set; }
public string anotherMessage {get; set; }
}
应转换为
class FOOABC
{
public string THISMESSAGE {get; set; }
public string ANOTHER {get; set; }
}
可以在不使用属性的情况下使用嵌套同时执行这两项操作:
DefaultFieldNameInferrer(Func)
InferMappingFor()
与TypeName()
和rename()
void Main()
{
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var defaultIndex = "default-index";
var connectionSettings = new ConnectionSettings(pool)
.DefaultFieldNameInferrer(s => s.ToUpperInvariant())
.InferMappingFor<Foo>(m => m
.TypeName("FOOABC")
.Rename(p => p.anotherMessage, "ANOTHER")
)
.DefaultIndex(defaultIndex);
var client = new ElasticClient(connectionSettings);
if (client.IndexExists(defaultIndex).Exists)
client.DeleteIndex(defaultIndex);
var indexResponse = client.Index(new Foo
{
thisMessage = "this message",
anotherMessage = "another message"
});
}
class Foo
{
public string thisMessage { get; set; }
public string anotherMessage { get; set; }
}
您是否也要更改旧文档?不清楚您在问什么;您想更改类型的源代码,还是想控制它们序列化为json的方式,以控制C#POCO上每个属性的
\u type
和字段属性?我只想重命名属性并在索引到elasticsearch之前将其更改为大写。
POST http://localhost:9200/default-index/FOOABC?pretty=true
{
"THISMESSAGE": "this message",
"ANOTHER": "another message"
}
Status: 201
{
"_index" : "default-index",
"_type" : "FOOABC",
"_id" : "AVtaHKDcii5CLKx9KIcZ",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : true
}