我试图在elasticsearch中设置索引并遇到子对象的问题。
鉴于以下内容:
public class VersionNo
{
public string Major { get; set; }
public string Minor { get; set; }
public string Build { get; set; }
public string Revision { get; set; }
public override string ToString()
{
return $"{Major}_{Minor}_{Build}_{Revision}";
}
}
public class Workflow
{
public string Id { get; set; }
public string Name { get; set; }
public VersionNo VersionNo { get; set; }
}
我如何为Workflow.VersionNo构建一个流畅的映射,以便索引最终得到" Major.Minor.Build.Revision"?在下面的示例中,我无法弄清楚如何设置" versionNo"正确地组合子领域......
.Mappings(ms => ms
.Map<Workflow>(m => m
.Properties(props => props
.Text(t => t
.Name("name")
)
.Text(t => t
.Name("versionNo")
)
.Text(t => t
.Name("id")
)
)
)
)
答案 0 :(得分:0)
您需要告诉NEST如何序列化VersionNo
,以便将该类型的实例序列化为字符串。最简单的方法是
JsonNetSerializer
in NEST.JsonNetSerializer package以便Json.NET是NEST用于您的文档的序列化程序VersionNo
序列化为字符串值的VersionNo
写一个custom JsonConverter
,以及如何将字符串值读入VersionNo
或者,你可以在VersionNo
上定义一个字符串 property ,它将值作为被覆盖的ToString()
方法连接起来。除了Major
,Minor
,Build
和Revision
属性之外,还可以在Elasticsearch中映射此属性。使用这种方法,您可以搜索任何属性,因为每个属性都将被编入索引。