2013-03-10 62 views
0

我對ES相對較新,並且在查詢dsl上很難找到真正好的參考或教程。ElasticSearch - 僅查詢非空的特定數組元素

我們在下面有一個文檔類型的例子。我希望進行的查詢是:「返回至少有一個實體記錄的所有email_package記錄('實體'數組中的一條記錄)」。是的,我想要完整的「電子郵件」記錄。

任何人都可以協助嗎?此外,如果您可以指向某個地址的參考或教程或食譜,可以解決這樣的問題,那也將不勝感激。

"email_package": { 
        "email": { 
         "date": "2007-02-13T18:24:22-04:00", 
         "subject": "this is the subject", 
         "body": "this is the body" 
        }, 
        "entities": [ 
         { 
          "Louisville": { 
           "City": "South" 
          } 
         }, 
         { 
          "Memphis": { 
           "City": "South" 
          } 
         } 
        ] 
       } 
       // more 'email_package records follow... 

回答

1

您的文檔有點問題,因爲您似乎在嵌套對象並賦予它們不同的名稱。如果你不綁定到當前的結構,我會改變映射到的東西,更容易管理和查詢將是直線前進,e.g:

"email_package": { 
    "email": { 
     "body": "this is the body1", 
     "date": "2007-02-13T18:24:22-04:00", 
     "subject": "this is the subject" 
    }, 
    "entities": [ 
     { 
      "name": "Louisville" 
      "City": "South", 
     }, 
     { 
      "name": "Memphis"     
      "City": "South", 
     } 
    ] 
} 

查詢:

{ "filter": { 
    "exists": { 
     "field": "email_package.entities.name" 
    } 
} 
+0

感謝runarM!我會試試看。 – bethesdaboys 2013-03-12 12:05:59