2014-10-09 72 views
1

當我嘗試查詢存在嵌套場,我沒有得到任何結果(它不返回任何錯誤):查詢嵌套領域使用DSL與elasticsearch

   result = es.search(
          index="mydb", 
          doc_type="collection", 
          body={"query": 
          { 
            "term" : { 
             "foo.bar.field" : value 
            } 
          } 
          } 
         ) 

注:字段內酒吧和酒吧內FOO:

{ 'topfield' : 23, 'foo' : { 'bar' : { 'field' : 69 }, 'otherfield' : 1}} 

如果我嘗試在頂部的領域一樣,它工作正常:

   result = es.search(
          index="mydb", 
          doc_type="collection", 
          body={"query": 
          { 
            "term" : { 
             "topfield" : value 
            } 
          } 
          } 
         ) 

回答

0

我猜想查詢應該如下。我認爲從下面的文檔可以看出,field bar => var中存在不匹配。

{ 'topfield' : 23, 'foo' : { 'var' : { 'field' : 69 }, 'otherfield' : 1}} 

請嘗試以下

  result = es.search(
         index="mydb", 
         doc_type="collection", 
         body={"query": 
         { 
           "term" : { 
            "foo.var.field" : value 
           } 
         } 
         } 
        ) 

代碼請你在此確認。

+0

問題是點sintax,var/bar它不是問題 – jpalanco 2014-10-09 16:28:56