这是我在弹性搜索其中一个子文档时的现有映射
sessions" : {
"_routing" : {
"required" : true
},
"properties" : {
"operatingSystem" : {
"index" : "not_analyzed",
"type" : "string"
},
"eventDate" : {
"format" : "dateOptionalTime",
"type" : "date"
},
"durations" : {
"type" : "integer"
},
"manufacturer" : {
"index" : "not_analyzed",
"type" : "string"
},
"deviceModel" : {
"index" : "not_analyzed",
"type" : "string"
},
"applicationId" : {
"type" : "integer"
},
"deviceId" : {
"type" : "string"
}
},
"_parent" : {
"type" : "userinfo"
}
}
在上面的映射“durations”字段是一个整数数组.我需要通过添加一个名为“durationCount”的新字段来更新现有映射,该字段的默认值应该是durations数组的大小.
PUT sessions/_mapping
{
"properties" : {
"sessionCount" : {
"type" : "integer"
}
}
}
使用上面的映射我能够更新现有的映射,但是我无法弄清楚如何在更新映射时为每个会话文档赋值(对于每个会话文档应该是持续时间数组大小).有任何想法吗 ?
最佳答案 这里有2条建议 –
>您可以使用缺少的过滤器在查询中调整默认值,而不是添加默认值.可以说,您希望基于匹配查询进行搜索 – 而不仅仅是匹配查询,请使用bool查询,其中should子句具有匹配项,missing filter.内部使用筛选查询.这样,那些没有该领域的文件也被记录在案.
>如果您绝对需要该字段中的值用于现有文档,则需要重新索引整个文档集.或者,使用out of box插件,update by query –