2016-03-19 135 views
0

如何在執行查詢之前過濾elasticsearch 2.2中的文檔。我引用這個頁面,但仍然無法正確查詢。彈性搜索中的過濾器2.2

https://www.elastic.co/guide/en/elasticsearch/reference/2.2/query-filter-context.html

{ 
"size" : 9999, 
"query" : { 
"bool" : {  
    "filter" : { 
    "bool" : { 
     "must" : [ { 
     "exists" : { 
      "field" : "dvd" 
     } 
     } ] 
    } 
    }, 
    "should" : [{ 

    "bool" : { 
     "must" : [ { 
     "match" : { 
      "rec" : { 
      "query" : "CKS", 
      "type" : "boolean" 
      } 
     } 
     }, { 
     "match" : { 
      "date" : { 
      "query" : "2016-03-09", 
      "type" : "boolean" 
      } 
     } 
     } ] 
    } 

    }] 
} 
    } 
} 

這就是我試圖做...我有運氣應該子句的每一個具有2必須條款。 should子句中的任何一個都應匹配以檢索文檔。我只包含一個應該從句來簡化。查詢正在完善。我想對此應用過濾器。在查詢之前過濾文檔。但是這不起作用。

我使用的是Elasticsearch 2.2 ...請讓我知道如何在此版本的elasticsearch中過濾文檔。

我認爲後過濾器是爲了不同的目的。

回答

1

會建議對bool查詢的過濾器部分進行更改。您可以將一系列查詢傳遞給過濾器項目。這將不是成爲: { "filter" : [ { "exists": { "field" : "dvd" } } ] }

+0

如果我想在OR條件中應用兩個存在過濾器,該怎麼辦。即)如果存在過濾器中存在任何一個字段,則過濾doc。它沒有必要同時擁有兩個字段。 – user2526641

0

關於下Jettro的問題,您的評論:

您可以使用布爾查詢/過濾器布爾查詢的過濾塊中,像這樣:

{ 
    "query": { 
    "bool": { 
     "filter": { 
     "bool": { 
      "should": [ 
      { 
       "exists": { 
       "field": "dvd" 
       } 
      }, 
      { 
       "exists": { 
       "field": "album" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

現在的文件與DVD字段或專輯字段將被返回。