2011-11-29 44 views
7

誤區我有一個查詢,看起來像這樣:查詢DSL - 濾波器

{ 
    "query": { 
    "constant_score": 
     "filter": { 
     "missing": { 
      "field": "parent_id" 
     } 
     } 
    } 
}, 
"size": limit, 
"from": offset 
} 

我喜歡的類型有parent_idwall_id場。我如何修改此查詢,以便我可以獲得所有沒有parent_id且沒有wall_id的類型?我似乎無法從文檔中解讀它。感謝您提供的任何幫助!

UPDATE

我有以下的查詢工作,但我不喜歡的標題包羅萬象query。有沒有辦法做到這一點,而無需添加一個「包羅萬象

{ 
    "query":{ 
    "filtered":{ 
    "query":{ 
     "field":{ "title":"*" } 
    }, 
    "filter":{ 
     "and":{ 
      "filters":[ 
       { 
       "missing":{ "field":"parent_id" } 
       }, 
       { 
       "missing":{ "field":"wall_id" } 
       } 
      ] 
     } 
    } 
    } 
}, "size":10, "from":0 
} 

回答

7

就快,你只需要使用and過濾器的constant_score查詢下:

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "and":[ 
      { "missing":{ "field":"parent_id" }}, 
      { "missing":{ "field":"wall_id" }} 
     ] 
     } 
    } 
    } 
} 
+0

哇,這是但是它可以工作,謝謝!順便說一下,這種格式非常挑剔,除了elasticsearch.org文檔外,還有不錯的文檔資源嗎? – swatkins

+0

哎呀,謝謝。沒有我知道的另一個資源,但您可能想查看我給出的演示文稿的幻燈片:http://www.elasticsearch.org/tutorials/2011/08/28/另外,我不知道你用什麼客戶端來與ES交談,但是如果你熟悉Perl,可以看看SearchBuilder,它是一個更緊湊的Perl。 'ish語法被翻譯成標準ES查詢dsl:https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

我使用node.js和elasticsearchclient模塊。這是一個很大的幫助。謝謝! – swatkins