elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python Elasticsearch查询嵌套对象不返回结果

Python Elasticsearch查询嵌套对象不返回结果,python,elasticsearch,Python,elasticsearch,我已经创建了Elasticsearch索引,其中一个嵌套字段具有如下映射 "groups": { "type": "nested", "properties": { "name": { "type": "text" }, "value": { "type": "text" } } } 关于ES版本及其5.0的详细信息,我正在客户端使用官方python客户端

我已经创建了Elasticsearch索引,其中一个嵌套字段具有如下映射

"groups": {
    "type": "nested",
    "properties": {
        "name": {
             "type": "text"
        },
        "value": {
             "type": "text"
        }
    }
}
关于ES版本及其5.0的详细信息,我正在客户端使用官方python客户端。我想根据它的值查询这个嵌套字段

假设还有另一个名为name的字段,它是文本类型字段。我想查找所有以A开头并属于指定组的名称

一些样本数据

组-人力资源(名称=人力资源,价值=人力资源),营销(名称=营销,价值=营销) 名字-安德鲁,阿尔法,巴里,约翰

安德鲁和阿尔法属于人力资源部

基于此,我尝试了一个查询

{
    'query': {
        'bool': {
            'must': [{
                'match_phrase_prefix': {
                    'title': 'A'
                }
            }]
        },
        'nested': {
            'path': 'groups',
            'query': {
                'bool': {
                    'must': [{
                        'match': {
                            'groups.value': 'hr'
                        }
                    }]
                }
            }
        }
    }
}

对于这个查询,我引用了ES文档,但这个查询没有返回任何内容。如果有人能指出此查询或映射本身的错误,那就太好了。

您就快到了,只需将
嵌套的
查询移动到
bool/must
查询中:

{
    'query': {
        'bool': {
            'must': [
              {
                'match_phrase_prefix': {
                    'title': 'A'
                }
              },
              {
                'nested': {
                   'path': 'groups',
                   'query': {
                     'bool': {
                       'must': [{
                          'match': {
                            'groups.value': 'hr'
                          }
                        }]
                     }
                   }
                }
              }
            ]
        }
    }
}

就快到了,只需在
bool/must
查询中移动
nested
查询:

{
    'query': {
        'bool': {
            'must': [
              {
                'match_phrase_prefix': {
                    'title': 'A'
                }
              },
              {
                'nested': {
                   'path': 'groups',
                   'query': {
                     'bool': {
                       'must': [{
                          'match': {
                            'groups.value': 'hr'
                          }
                        }]
                     }
                   }
                }
              }
            ]
        }
    }
}

我是否需要更新映射以获得所需的结果?它起作用了。谢谢你,伙计!!答案是可以接受的,但现在阻止我也可以!如果允许的话,我也会这样做。不,你的映射很好,只是查询的格式不正确。我需要更新我的映射以获得所需的结果吗?它起作用了。谢谢你,伙计!!答案是可以接受的,但现在阻止我也可以!如果允许,我们也会这样做。不,您的映射很好,只是查询的格式不正确