在多个路径上查询多个嵌套对象

时间:2016-09-15 21:51:36

标签: elasticsearch

Elasticsearch中可能query多个嵌套对象在不同路径上吗?我可以在一个路径上查询一个嵌套对象,但我找不到正确的语法来查询不同路径上的两个对象。

我需要使用如下逻辑查询:

{'query': {
   'bool': {
       'must': [
           'nested': {
               'path': 'Diagnosis',
               'query': {
                   'bool': {
                       'must': [{'match_phrase': {'Diagnosis.Diagnosis': {'query': "epidemia"}}}]
                   }  
               }
           },
           'nested': {
               'path': 'Demographic',
               'query': {
                   'bool': {
                       'must': [{'match_phrase': {'Demographic.Gender': {'query': "female"}}}]
                   }  
               }
           }
       ]
   }
}}

最终目标是对我的PostgreSQL数据库数据进行非规范化(72个表,总共超过1600列),并能够对其使用布尔查询。

1 个答案:

答案 0 :(得分:11)

它有效,我在nested查询周围错过了大括号。 正确的方法:

{'query': {
   'bool': {
       'must': [
           {'nested': {
               'path': 'Diagnosis',
               'query': {
                   'bool': {
                       'must': [{'match_phrase': {'Diagnosis.Diagnosis': {'query': "epidemia"}}}]
                   }  
               }
           }},
           {'nested': {
               'path': 'Demographic',
               'query': {
                   'bool': {
                       'must': [{'match_phrase': {'Demographic.Gender': {'query': "female"}}}]
                   }  
               }
           }}
       ]
   }
}}