2012-05-06 20 views
7

से एक निश्चित गैर खाली कुंजी है कि I'de एक elasticsearch क्वेरी के परिणामों को फ़िल्टर और केवल उन उदाहरण के लिए एक गैर खाली क्षेत्रelasticsearch: केवल तत्वों यूआरएल

है कि पुनः प्राप्त करना चाहते हो। निम्न डेटा

{ 
    total: 4912, 
    max_score: 1, 
    hits: [ 
{ 
    { 
    _index: "gcba", 
    _type: "bafici", 
    _id: "5a93472b-5db4-4ff9-8c8a-d13158e72d5f-62", 
    _score: 1, 
    _source: { 
     id_film: "23", 
     title: "great film", 
    } 
    }, 
    { 
    _index: "gcba", 
    _type: "bafici", 
    _id: "2732fbf4-4e55-4794-8e98-e5d5fa6a0419-40", 
    _score: 1, 
    _source: { 
     name: "conference", 
     [...] 
    } 
    } 
} 

दे रही है मैं केवल एक id_film मूल्य के साथ उन तत्वों को पाने के लिए

उत्तर

5

ES केवल दस्तावेजों से है कि विशेष रूप से क्षेत्र वापस आ जाएगी

.../_search?from=1&size=100&q=id_film:'*' 

की तरह कुछ जारी करना चाहते हैं वाइल्डकार्ड क्वेरी करते समय डिफ़ॉल्ट:

% curl -XPUT http://localhost:9200/foo/bar/1 -d '{"id":1,"id_film":23}' 
{"ok":true,"_index":"foo","_type":"bar","_id":"1","_version":1}% 

% curl -XPUT http://localhost:9200/foo/bar/2 -d '{"id":2,"foo":23}' 
{"ok":true,"_index":"foo","_type":"bar","_id":"2","_version":1}% 

% curl "http://localhost:9200/foo/_search?q=id_film:*&pretty=true" 
{ 
    "took" : 2, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "foo", 
     "_type" : "bar", 
     "_id" : "1", 
     "_score" : 1.0, "_source" : {"id":1,"id_film":23} 
    } ] 
    } 
}% 
+0

बहुत बहुत धन्यवाद! यही वही है जो मैं सोच रहा हूं, लेकिन मैं सामान के साथ गड़बड़ कर रहा हूं, उद्धरण के बिना यह बहुत अच्छा काम करता है! – opensas

4

आप मौजूदा का भी उपयोग कर सकते हैं (या गायब) फिल्टर। यहाँ देखें:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-exists-filter.html

केवल बात यह है, यह एक फिल्टर, नहीं एक प्रश्न है। इसे खोज विधि के साथ काम करने के लिए, आपको match_all की एक क्वेरी की आवश्यकता है और फ़िल्टर के रूप में मौजूद है। (या, इसके भीतर निर्दिष्ट इस फ़िल्टर के साथ एक स्थिर_स्क्रीन क्वेरी का उपयोग करें)

+0

हाँ, फ़िल्टर क्वेरी संरचना में नहीं हो सकते हैं, लेकिन कैश किया जा सकता है ... उत्पादन के उपयोग के लिए imho अधिक उपयुक्त – gatoatigrado