2013-04-27 13 views
14

में एक मान के साथ संपत्ति पर एकाधिक मानों के साथ क्वेरी मैं इस क्वेरी को थोड़ा सा बनाने की कोशिश कर रहा हूं। जिस इंडेक्स में मैं खोज रहा हूं वह एक आईडी के साथ "इकाई" फ़ील्ड भी है। इसलिए कुछ रिकॉर्ड्स में "इकाई" होगी: 16, "इकाई" 156 आदि, इकाई की आईडी के आधार पर। मुझे इस क्वेरी को इस तरह विस्तारित करने की आवश्यकता है कि मैं किसी सरणी या मानों की कुछ सूची जैसे {: term => {: entity => [1, 16, 100]}} पास कर सकता हूं और जिनके पास रिकॉर्ड हैं इन integers में से एक उनके इकाई मूल्य के रूप में। मेरे पास अब तक कोई भाग्य नहीं है, क्या कोई मेरी मदद कर सकता है?Elasticsearch

{ 
    "query" : { 

    "bool" : { 
     "must" : [ 
     { 
      "term" : {"user_type" : "alpha"} 
     }, 
     { 
      "term" :{"area" : "16"} 
     } 
     ], 
     "must_not" : [], 
     "should" : [] 
    } 
    }, 
    "filter": { 
    "or" : [{ 
     "and" : [ 
      { "term" : { "area" : "16" } }, 
      { "term" : { "date" : "05072013" } } 
     ] 
    }, { 
     "and" : [ 
      { "term" : { "area" : "16" } }, 
      { "term" : { "date" : "blank" } } 
     ] 
    } 


    ] 
    }, 
"from" : 0, 
"size" : 100 
} 

उत्तर

28

उपयोग "terms" बजाय "term"

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html

{ "terms" : { "entity" : [ 123, 1234, ... ] }}

+0

आपको बहुत बहुत धन्यवाद! आपने मेरा दिन बचाया :) – NorthCat

+0

यह क्वेरी या एंड के साथ संपर्क करेगी? मैं अपनी हालत को जांचना चाहता हूं या जैसा: उपरोक्त क्वेरी इकाई = 123 या इकाई = 1234 में। उस क्वेरी को कैसे लिखें? –

+0

@ दीपपरेख क्या आप उपर्युक्त टिप्पणी के लिए क्वेरी लिखने में सक्षम थे? और या ओआर? मेरे पास ऐसा कुछ है। (मुझे फ़िल्टर करने के लिए एक्सटेंशन के कई मानों को पास करना होगा। क्या आप इसे हल करने में मेरी सहायता कर सकते हैं) अभी मैं केवल एक्सटेंशन का एक मूल्य भेज सकता हूं। अगर मुझे फिल्टर क्वेरी के लिए एक्सटेंशन के कई मानों को पास करना है तो क्या होगा? 'फ़िलटर (ft => ft.Term (t => t.Field (" content_type ")। मान (एक्सटेंशन))))' ' – ASN