嵌套对象的嵌套和弹性搜索更新映射?
Nest and elastic search- update mapping for nested object?
我正在尝试将新的 属性 添加到现有的嵌套文档中。我的文件看起来像:
"mappings": {
"test": {
"_routing": {
"required": true,
"path": "tId"
},
"properties": {
"series": {
"type": "nested",
"properties": {
"iType": {
"type": "string",
"index": "not_analyzed",
"doc_values": true
},
"isValid": {
"type": "boolean"
},
},
},
}
}
我想插入到嵌套文档 "series" 的 属性 是 "iType"。
如何使用 NEST put mapping API 更新现有映射?
我们将不胜感激。
提前致谢。
#####*****已更新*****##########
我需要更新具有属性的嵌套元素的映射:
"iType": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"doc_values": true,
"fielddata": {
"loading": "eager_global_ordinals"
}
}
}
},
我如何使用 NEST 做到这一点?
我的查询如下:
var response2 = elasticClient.Map < Test > (e => e
.Properties(props => props
.NestedObject < series > (s => s
.Properties(sprops => sprops
.String(n => n.Name(name => "iType"))))));
我遇到异常:无法获取嵌套对象映射的字段名称
有什么问题需要更正吗?
您可以通过
更新嵌套对象的映射
var response = client.Map<YourType>(m => m
.Properties(p => p
.NestedObject<YourNestedType>(n => n
.Name(name => name.NestedObject)
.Properties(pp => pp
.String(s => s.Name(name => name.NewProp))
))));
更新
这是您可以使用 multi fields 更新索引映射的方法:
var response = client.Map<Test>(m => m
.Properties(p => p
.NestedObject<Series>(nested => nested
.Name(name => name.Series)
.Properties(pp => pp
.MultiField(mf => mf
.Name(name => name.iType)
.Fields(f => f
.String(s => s.Name(n => n.iType))
.String(s => s
.Name(n => n.iType.Suffix("raw"))
.Index(FieldIndexOption.NotAnalyzed)
.DocValues()
.FieldData(fd => fd
.Loading(FieldDataLoading.EagerGlobalOrdinals))))))
)));
你遇到了异常,因为你没有为嵌套对象指定名称,再看一遍我的映射定义:
希望对您有所帮助。
我正在尝试将新的 属性 添加到现有的嵌套文档中。我的文件看起来像:
"mappings": {
"test": {
"_routing": {
"required": true,
"path": "tId"
},
"properties": {
"series": {
"type": "nested",
"properties": {
"iType": {
"type": "string",
"index": "not_analyzed",
"doc_values": true
},
"isValid": {
"type": "boolean"
},
},
},
}
}
我想插入到嵌套文档 "series" 的 属性 是 "iType"。 如何使用 NEST put mapping API 更新现有映射?
我们将不胜感激。
提前致谢。
#####*****已更新*****##########
我需要更新具有属性的嵌套元素的映射:
"iType": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"doc_values": true,
"fielddata": {
"loading": "eager_global_ordinals"
}
}
}
},
我如何使用 NEST 做到这一点?
我的查询如下:
var response2 = elasticClient.Map < Test > (e => e
.Properties(props => props
.NestedObject < series > (s => s
.Properties(sprops => sprops
.String(n => n.Name(name => "iType"))))));
我遇到异常:无法获取嵌套对象映射的字段名称 有什么问题需要更正吗?
您可以通过
更新嵌套对象的映射var response = client.Map<YourType>(m => m
.Properties(p => p
.NestedObject<YourNestedType>(n => n
.Name(name => name.NestedObject)
.Properties(pp => pp
.String(s => s.Name(name => name.NewProp))
))));
更新
这是您可以使用 multi fields 更新索引映射的方法:
var response = client.Map<Test>(m => m
.Properties(p => p
.NestedObject<Series>(nested => nested
.Name(name => name.Series)
.Properties(pp => pp
.MultiField(mf => mf
.Name(name => name.iType)
.Fields(f => f
.String(s => s.Name(n => n.iType))
.String(s => s
.Name(n => n.iType.Suffix("raw"))
.Index(FieldIndexOption.NotAnalyzed)
.DocValues()
.FieldData(fd => fd
.Loading(FieldDataLoading.EagerGlobalOrdinals))))))
)));
你遇到了异常,因为你没有为嵌套对象指定名称,再看一遍我的映射定义:
希望对您有所帮助。