Da NullValue
für DateAttribute
ist ein DateTime
, kann es nicht sein, setzt auf ein Attribut, das auf eine POCO-Eigenschaft angewendet wird, da der Set-Wert eine Kompilierzeitkonstante sein muss. Dies ist eine der Einschränkungen des Attributansatzes für das Mapping.
NullValue
kann in ein paar Möglichkeiten eingestellt werden:
Mit der fließend API
Die fließend Mapping kann alles, was Mapping-Attribut, sowie Griff Funktionen wie Nullwerte tun können, multi_fields usw.
public class MyDocument
{
public DateTime DateOfBirth { get; set; }
}
var fluentMappingResponse = client.Map<MyDocument>(m => m
.Index("index-name")
.AutoMap()
.Properties(p => p
.Date(d => d
.Name(n => n.DateOfBirth)
.NullValue(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
)
)
);
Mit einem Besuchermuster
Definieren Sie einen Besucher, der alle Eigenschaften in der POCO aufruft, und verwenden Sie dies, um einen Nullwert festzulegen. Das Besuchermuster ist nützlich, um Konventionen auf Ihr Mapping anzuwenden. Beispielsweise sollten alle String-Eigenschaften ein multi_field mit einem nicht analysierten rohen Subfeld sein.
public class MyPropertyVisitor : NoopPropertyVisitor
{
public override void Visit(IDateProperty type, PropertyInfo propertyInfo, ElasticsearchPropertyAttributeBase attribute)
{
if (propertyInfo.DeclaringType == typeof(MyDocument) &&
propertyInfo.Name == nameof(MyDocument.DateOfBirth))
{
type.NullValue = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
}
}
}
var visitorMappingResponse = client.Map<MyDocument>(m => m
.Index("index-name")
.AutoMap(new MyPropertyVisitor())
);
sowohl die fließend Mapping und Besucher folgende Anfrage
{
"properties": {
"dateOfBirth": {
"null_value": "1970-01-01T00:00:00Z",
"type": "date"
}
}
}
Take a look at the automapping documentation for more information.
erzeugen, die eine große Antwort ist es Ihnen danken! Ich fing an zu denken, dass es wegen der Herangehensweise sein könnte, die ich benutzte, deshalb fuhr ich fort und setzte den Nullwert unter Verwendung der fließenden API. Ich denke, es ist nützlich, dies für zukünftige Referenz zu berücksichtigen. Vielen Dank für Ihre Hilfe – GSkidmore
@GSkidmore - keine Sorgen, glücklich zu helfen :) –