我的索引具有以下结构:
[
{
name:"project1",
users: [
{"id":"1"},
{"id":"2"}
]
},
#... more projects
]
我想知道如何获取特定用户的所有项目(通过其ID),这是我尝试过的:
q = Q("term", id="1")
resp = projects_index.query("nested",path="users",query=q).execute()
但是我没有结果,我想念什么?
谢谢
编辑:
这是我的索引映射:
{
"projects": {
"mappings": {
"doc": {
"properties": {
"created_at": {
"type": "date"
},
"name": {
"type": "text"
},
"users": {
"type": "nested",
"properties": {
"id": {
"type": "text"
}
}
}
}
}
}
}
}
答案 0 :(得分:1)
未获得结果的原因是,在指定嵌套路径时,您应提供包括父字段名称的全名,即您应使用users.id
而不是id
。因此查询将转换为以下内容:
{
"query": {
"bool": {
"filter": [
{
"nested": {
"path": "users",
"query": {
"term": {
"users.id": "1"
}
}
}
}
]
}
}
}
建议:将id
字段的类型更改为keyword
,以防止id值将令牌主义分为多个术语。