Kibana Elasticsearch C# Nest客户端,不同类型字段的动态模板

wb1gzix0  于 2022-12-16  发布在  Kibana
关注(0)|答案(1)|浏览(210)

我有一个类似这样的产品模型:

public string Id {get; set;}
public List<FieldValue> Fields { get; set; }

其中对象FieldValue为

public string FieldName {get; set;}
public string FieldType {get; set;}
public List<FieldData> Data  {get;set;}

和字段数据

public string Value {get; set;}

用户可以添加任意多个自定义字段,例如:

Id: 638f1304f2d753647be09c1a
Fields:[{
        FieldName: "Price",
        FieldType: "double"
        Data: [
               {"14.50"}]
       },

       {
        FieldName: "Description",
        FieldType: "string"
        Data: [
               {"Some text here"}]
       }]

字段类型可以不同(字符串、双精度型、整型)。
现在我需要索引这些产品中的每一个,以允许对这些字段进行高级搜索。对于“价格”字段,将其Map为ElasticSearch中的双字段,并允许对其进行范围查询,对于“描述”,将其Map为“关键字”等。
是否可以有某种方法,当产品首先进入索引时,将检查字段的类型,并为每个字段动态创建Map(如果FieldType ==“string”=〉Map为“keyword”,如果FieldType ==“double”=〉Map为“double”)?
我正在使用.Net Core 6和最新的NEST客户端。
流程是:创建产品后,从db(mongo)获取产品=〉(准备Map?)=〉在els中索引该产品。
我只使用自动Map()。我读了关于动态模板,看起来像我这里需要的东西,但不知道如何在网络核心与巢客户端实现。

vktxenjb

vktxenjb1#

Rob谢谢你的回复我想我可以用这个

Dictionary<string, object> IndexedFields { get; set; }

我在数据库中有信息,它应该是什么类型,然后我有一个自定义的方法来转换这个字符串字段在适当的类型之前发送索引的文件。

相关问题