2012-10-24 39 views
2
一種

如DOC解釋,當我存儲與_percolator查詢,如:限制過濾器調用在ElasticSearch

curl -XPUT localhost:9200/_percolator/test/kuku -d '{ 
    "color" : "blue", 
    "query" : { 
     "term" : { 
     "field1" : "value1" 
     } 
    } 
}' 

當我滲透在「測試」索引的文檔該查詢將運行,但如果我想將其限制在「測試」的索引類型「富」的唯一解決辦法是在查詢中添加類型:

curl -XPUT localhost:9200/_percolator/test/kuku -d '{ 
    "type":"foo", 
    "color" : "blue", 
    "query" : { 
     "term" : { 
     "field1" : "value1" 
     } 
    } 
}' 

和添加文檔時使用

curl -XGET localhost:9200/test/type1/_percolate -d '{ 
    "doc" : { 
     "field1" : "value1" 
    }, 
    "query" : { 
     "term" : { 
     "type" : "foo" 
     } 
    } 
    }' 

還有其他解決方案嗎? 我試過

curl -XPUT localhost:9200/_percolator/test/foo/kuku 

但它不起作用。

回答

2

的另一種方法是將原始查詢包裹成一個過濾查詢並添加一個條款過濾器_type:

{ 
    "query": { 
     "filtered":{ 
      "query": { 
       "term":{ 
        field1" : "value1" 
       } 
      }, 
      "filter": { 
       "term": { 
        "_type" : "type1" 
       } 
       } 
      } 
    } 
}