我正在尝试使用NEST库将一些基于JSON的Elasticsearch索引定义从elasticsearch-net 1.x转换为elasticsearch-net 5.4。原始映射包含类型为"dynamic_template"
的{{1}},但我无法确定如何使用当前的NEST库重新创建此类型。
有一些遗留Github issues和文档指向能够使用字符串值"{dynamic_type}"
在映射上设置显式Type()
,但这些方法在当前不存在该库的版本。
这是我们原始的索引定义:
"{dynamic_type}"
我设法使用NEST重建几乎相同的映射,但是用于设置映射类型。
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 2
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"dynamic_templates": [{
"default_template": {
"match": "*",
"mapping": {
"type": "{dynamic_type}",
"index": "not_analyzed",
"doc_values": true
}
}
}
],
"properties": {
"timestamp": {
"type": "date"
}
}
}
}
}
上面的create语句导致了这个索引定义:
_client.CreateIndex("test_index", desc => desc
.Settings(settings => settings
.NumberOfShards(2)
.NumberOfReplicas(2))
.Mappings(mappings => mappings
.Map<object>("_default_", s => s
.AllField(all => all
.Enabled(false))
.DynamicTemplates(dynamicTemplates => dynamicTemplates
.DynamicTemplate("default_template", defaultTemplate => defaultTemplate
.Match("*")
.Mapping(mapping => mapping
.Generic(g => g
.Index(FieldIndexOption.NotAnalyzed)
.DocValues(true)
)
)
)
)
.Properties(properties => properties
.Date(date => date.Name("timestamp"))
)
)
));
那么,我错过了什么吗? {
"settings": {
"index.number_of_replicas": 2,
"index.number_of_shards": 2
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"dynamic_templates": [
{
"default_template": {
"match": "*",
"mapping": {
"doc_values": true,
"index": "not_analyzed"
}
}
}
],
"properties": {
"timestamp": {
"type": "date"
}
}
}
}
}
甚至是必要的吗?
我不确定{dynamic_type}
的用法,但它似乎接近我所追求的。 NEST图书馆迫切需要文档。