我的映射如下所示:
"mappings": {
"nodes": {
"properties": {
"createdAt": {
"type": "date",
"format": "dateOptionalTime"
},
"data": {
"type": "string"
},
"isFile": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"location": {
"properties": {
"_id": {
"type": "string"
}
}
},
"name": {
"type": "string"
},
"owner": {
"properties": {
"_id": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"sharedWith": {
"type": "object"
}
}
}
}
当我执行以下查询时:
"filter": {
"term": {
"owner.username": "user_69d349"
}
}
我得到了正确的结果,但是当我做的时候
"filter": {
"term": {
"owner._id": "RvdDC"
}
}
我没有结果。
我正在使用以下文件:
{
"_index": "nodess",
"_type": "nodes",
"_id": "I7Cac9n",
"_score": 1.0,
"_source": {
"name": "stream",
"isFile": true,
"owner": {
"_id": "RvdDC",
"username": "user_69349"
},
"sharedWith": [],
"isPublic": false,
"location": {
"_id": null
},
"data": "baked baked baked hey",
"createdAt": "2015-03-24T00:53:53.551Z"
}
}
答案 0 :(得分:1)
我想这是因为您没有使用nested
类型。
Here是一个很好的解释,当您不使用嵌套类型时会发生什么。基本上,当您为对象数组编制索引时,文档会被展平。
你必须告诉ES你正在使用嵌套类型。
"owner": {
"type": "nested", //<-- declare type here
"properties": {
"_id": {
"type": "string"
},
"username": {
"type": "string"
}
}
},