2016-09-15 19 views
3

query複数のネストされたオブジェクト異なるパスにあるはElasticsearchにありますか? 1つのパスで1つのネストされたオブジェクトを照会できますが、異なるパス上の2つのオブジェクトを照会する正しい構文を見つけることができません。複数のネストされたオブジェクトを複数のパスで照会する

私は、次のようなロジックで照会する必要が

{'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"}}}] 
        } 
       } 
      } 
     ] 
    } 
}} 

究極の目標は、(合計で1600個の列の上に、72個のテーブルを)私のPostgreSQLのDBのデータを非正規化することであり、ブールクエリを超える使用することができますそれ。

答えて

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

構文は正しいですが、inner_hits {}を2つの異なるパスで使用すると、Elasticは結果を返しません。 inner_hitsを同じパスで2回使用すると、DOESは結果を返します。:( – mvdb

関連する問題