我面临的问题,如数据类型的关键得到改变。在创建索引时,我将数据类型设置为嵌套的,但由于某些原因,它被更改为对象。我通过无痛脚本进行积垢手术,但这似乎没问题。
弹性版本7.3.0
初始模板:
"settings": {
"number_of_shards": 1,
},
"mappings" : {
"properties": {
"deleted_at": { "type": "date" },
"updated_at": { "type": "date" },
"id": { "type": "integer" },
"user_id": { "type": "integer" },
... some more keys
"user_tags": {
"type": "nested"
},
"user_files": {
"type": "nested"
},
}
}
批量插入/更新后的Map
"mappings" : {
"properties": {
"deleted_at": { "type": "date" },
"updated_at": { "type": "date" },
"id": { "type": "integer" },
"user_id": { "type": "integer" },
"user_tags": {
"properties": {
...some properties
}
},
"user_files": {
"properties": {
...some properties
}
},
}
}
我必须重新索引来解决这个问题,但这种情况经常发生。还有什么方法可以知道键的数据类型是嵌套的还是对象的?
提前谢谢。
1条答案
按热度按时间dtcbnfnu1#
通过设置
"dynamic": "strict"
您的Map不会更改,也不会插入不合适的文档。要解决这个问题,您需要定义要在嵌套字段中的所有字段。例如:如果您只想存储一个列表,可以使用如下Map:
在第二个Map中,您可以使用此结果存储用户标记
["tag1", "tag2", ...]