将 DynamicTemplates 与 NEST 和 ElasticSearch 结合使用的 C# 示例
C# Sample to use DynamicTemplates with NEST and ElasticSearch
实际上 Nest 可以选择使用此映射配置动态映射(取自 NEST 源代码)
.DynamicTemplates(d => d
.Add(t => t
.Name("template_1")
.Match("multi*")
.Mapping(tm => tm
.MultiField(mf => mf
.Fields(mff => mff
.Generic(g => g
.Name("{name}")
.Type("{dynamic_type}")
.Index("analyzed")
.Store(false)
我想知道是否有一些关于使用动态对象或字典的选项,谢谢。
吉安玛丽亚。
请参阅此link以了解 Elasticsearch 如何管理对象之间的关系。
现在假设您在 Class:
中有对象的集合 MyDict
public class MyClass
{
public string Id { get; set; }
public DateTime Created { get; set; }
public Dictionary<string, object> MyDict { get; set; }
}
文档的表示,此 class 的实例,在索引上应如下所示(在我的示例中,我使用 MyDict 集合来描述用户权限):
{
"_index": "myindex",
"_type": "myclass",
"_id": "deb087c7d351-144b32bd-8534-4412-abbd",
"_version": 1,
"_score": 1,
"_source": {
"id": "deb087c7d351-144b32bd-8534-4412-abbd",
"created ": "2015-07-15T12:42:00",
"mydict": {
"owner": "administrator",
"permission": "777",
"description": "superuser",
},
}
}
现在,如果您想定义一个 DynamicTemplate 来匹配您在 MyDict Collection 上的字段,您可以使用模板定义的 PathMatch
选项,这允许将动态模板与 "full" 字段的点符号名称 (check full documentation)
这是 MyDict 集合中字段的 DynamicTemplate 示例设置为 not_analyzed:
.DynamicTemplates(dt => dt
.Add(t => t
.Name("mydict_notanalyzed")
.PathMatch("mydict.*")
.Mapping(tm => tm
.Generic(g => g.Index("not_analyzed")))
)
)
实际上 Nest 可以选择使用此映射配置动态映射(取自 NEST 源代码)
.DynamicTemplates(d => d
.Add(t => t
.Name("template_1")
.Match("multi*")
.Mapping(tm => tm
.MultiField(mf => mf
.Fields(mff => mff
.Generic(g => g
.Name("{name}")
.Type("{dynamic_type}")
.Index("analyzed")
.Store(false)
我想知道是否有一些关于使用动态对象或字典的选项,谢谢。
吉安玛丽亚。
请参阅此link以了解 Elasticsearch 如何管理对象之间的关系。
现在假设您在 Class:
中有对象的集合 MyDictpublic class MyClass
{
public string Id { get; set; }
public DateTime Created { get; set; }
public Dictionary<string, object> MyDict { get; set; }
}
文档的表示,此 class 的实例,在索引上应如下所示(在我的示例中,我使用 MyDict 集合来描述用户权限):
{
"_index": "myindex",
"_type": "myclass",
"_id": "deb087c7d351-144b32bd-8534-4412-abbd",
"_version": 1,
"_score": 1,
"_source": {
"id": "deb087c7d351-144b32bd-8534-4412-abbd",
"created ": "2015-07-15T12:42:00",
"mydict": {
"owner": "administrator",
"permission": "777",
"description": "superuser",
},
}
}
现在,如果您想定义一个 DynamicTemplate 来匹配您在 MyDict Collection 上的字段,您可以使用模板定义的 PathMatch
选项,这允许将动态模板与 "full" 字段的点符号名称 (check full documentation)
这是 MyDict 集合中字段的 DynamicTemplate 示例设置为 not_analyzed:
.DynamicTemplates(dt => dt
.Add(t => t
.Name("mydict_notanalyzed")
.PathMatch("mydict.*")
.Mapping(tm => tm
.Generic(g => g.Index("not_analyzed")))
)
)