我之前为父子文档编制索引的实现如下所示。
索引1:
{
"XX": {
"date_detection": true,
"_parent": {
"type": "versiontest"
},
"properties": {
"curatedBy": {
"type": "keyword",
"index": "true"
}
}
}
}
索引2:
{
"YY": {
"date_detection": false,
"properties": {
"versionnumber": {
"type": "keyword"
},
"versiondate": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
}
}
}
}
现在我根据ES 6.2文档修改了子索引并进行了以下更改。
{
"XX": {
"date_detection": true,
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"YY": "XX"
}
},
"curatedBy": {
"type": "keyword",
"index": "true"
}
}
}
}
但是当我尝试创建父索引和子索引并推送文档时,我看到以下错误。
java.lang.IllegalArgumentException:拒绝将映射更新为[XXtest],因为最终映射将具有多于1种类型:[XX,YY]
有人可以在这里建议不正确的内容吗?
答案 0 :(得分:0)
我对顶级'XX'感到有些困惑 - 这种类型与关系没有任何关系。您现在应该使用类型_doc
,这将使7.0中的迁移更容易(API中的类型将是可选的)。
IMO你的映射应该是这样的:
PUT my-index
{
"mappings": {
"_doc" : {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"my-parent": "my-child"
}
},
"curatedBy": {
...
}
}
}
}
}
然后你可以索引数据:
PUT my-index/_doc/parent1
{
"curatedBy" : "...",
"my_join_field": {
"name": "my-parent"
}
}
PUT my-index/_doc/child1?routing=parent1
{
"curatedBy" : "...",
"my_join_field": {
"name": "my-child",
"parent": "parent1"
}
}