elasticsearch ElasticSearch&;NEST 6.x:将复杂对象映射到字符串,elasticsearch,nest,elasticsearch-6,elasticsearch,Nest,Elasticsearch 6" /> elasticsearch ElasticSearch&;NEST 6.x:将复杂对象映射到字符串,elasticsearch,nest,elasticsearch-6,elasticsearch,Nest,Elasticsearch 6" />

elasticsearch ElasticSearch&;NEST 6.x:将复杂对象映射到字符串

elasticsearch ElasticSearch&;NEST 6.x:将复杂对象映射到字符串,elasticsearch,nest,elasticsearch-6,elasticsearch,Nest,Elasticsearch 6,我试图在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 s

我试图在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")
                        )
                    )
                )
            )
.Mappings(ms=>ms
.Map(m=>m
.Properties(props=>props
.Text(t=>t
.姓名(“姓名”)
)
.Text(t=>t
.名称(“版本号”)
)
.Text(t=>t
.姓名(“id”)
)
)
)
)

您需要告诉NEST如何序列化
VersionNo
,以便将该类型的实例序列化为字符串。最直接的方法是

  • 添加nuget包
  • 因此,Json.NET是NEST用于文档的序列化程序
  • VersionNo
    编写一个函数,它知道如何将
    VersionNo
    序列化为字符串值,以及如何将字符串值读入
    VersionNo

  • 或者,您可以在
    VersionNo
    上定义一个字符串属性,该属性将值连接为重写的
    ToString()
    方法。除了
    主要
    次要
    构建
    修订
    属性外,还可以在Elasticsearch中映射此属性。使用这种方法,您可以搜索任何属性,因为每个属性都将被索引