#elasticsearch #serilog
#elasticsearch #serilog
Вопрос:
У меня есть класс, Response
где Data
type — это в основном сложный тип типов SI, таких как Voltage
, Current
и т. Д
public class Response
{
string Name { get; }
object Data { get; }
ctor(...) {}
}
public class Voltage {
double NumberValue { get; }
...
}
public class Number {
bool NumberValue { get; }
...
}
public class Text {
string TextValue { get; }
...
}
Если я уничтожу его с помощью {@Response}
и сохраню в elastic search, эти типы будут корректно работать без какого-либо столкновения типов, т.Е. A Voltage
будет уничтожаться как Response.Data.NumberValue
(числовой), а a Text
будет уничтожаться в Response.Data.TextValue
(текстовый).
Однако иногда также возможно, что Data
это может быть просто int
или string
. В этих случаях это привело бы к разрушению до Response.Data
(long) и Response.Data
(text). Что вызывает проблему в индексе эластичного поиска.
Мне интересно, могу ли я использовать метод IDestructuringPolicy
s TryDestructure()
для пользовательского уничтожения Response
класса. Я бы хотел, чтобы int
также выполнялось разрушение на Response.Data.NumberValue
.
Комментарии:
1.Кажется, следующее может сработать в
TryDestructure
logEventProperties.Add( new LogEventProperty("Data", new StructureValue(new[] { new LogEventProperty("NumberValue", propertyValueFactory.CreatePropertyValue((double)data)) })));
Позвольте мне протестировать это полностью