2016-09-15 78 views
3

是否有可能在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列),並能夠通過使用布爾查詢它。

回答

4

它的工作原理,我錯過了大約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"}}}] 
        } 
       } 
      }} 
     ] 
    } 
}} 
+0

語法是正確的,但使用具有2條不同的路徑inner_hits {}的情況下,彈性不返回任何結果。 使用具有兩倍相同路徑的inner_hits,是否返回結果.. :( – mvdb