Elasticsearch查询嵌套对象无结果

问题描述:

我创建了Elasticsearch索引,其中一个嵌套字段的映射如下。Elasticsearch查询嵌套对象无结果

"groups": { 
    "type": "nested", 
    "properties": { 
     "name": { 
      "type": "text" 
     }, 
     "value": { 
      "type": "text" 
     } 
    } 
} 

论ES版本的详细信息,它的5.0和我使用Python官方客户端elasticsearch-py在客户端。我想根据它的来查询这个嵌套字段。

可以说有另一个字段叫做名称这是一个文本类型字段。我想查找以A开头并落入指定组的所有名称。

一些样本数据,

组 - HR(名称= HR,值=小时),市场营销(名称=营销,价值=市场营销) 名称 - 安德鲁,阿尔法,巴里,约翰

安德鲁Alpha属于HR组。

在此基础上我想查询

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

对于此查询我提到ES文档,但此查询不返回任何东西。如果有人能指出这个查询或映射本身有什么问题,那将是非常棒的。

就快,你只需要移动bool/must查询里面的nested查询:

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

我需要更新我的映射来得到想要的结果? –

+0

它的工作。谢了哥们!!答案被接受,但是SO现在正在阻止我!所以在允许的时候会这样做。 –

+0

没有你的映射是好的,只是查询格式不正确 – Val