2012-11-12 11 views
11

में कई प्रश्नों को कैसे संयोजित कर संदर्भ के लिए यहाँ कोड है। मैं एक हबोट प्लगइन बनाने की कोशिश कर रहा हूं जो elasticsearch पर लॉग इन करता है और फिर उन लॉग को खोजने के लिए हबॉट कमांड का उपयोग करता है।मैं ElasticSearch

https://gist.github.com/4050748

मैं रिकॉर्ड है कि दो क्वेरी से मेल प्राप्त करने का प्रयास कर रहा हूँ।

{ 
    query: { 
     match: { 
      user: "SomeUsername" 
     }, 
     range: { 
      date: { 
      from: (Date.now() - 3600) 
      } 
     } 
    }, 
    size: 50 
} 

मैं उम्मीद कर रहा था:

  • 50 को रिकॉर्ड
  • रिकॉर्ड कि पिछले एक घंटे

मुझे मिल गया में

  • रिकॉर्ड दिए गए उपयोगकर्ता था:

      ,210
    • 10 रिकॉर्ड
    • अभिलेख दिए गए उपयोगकर्ता
    • किसी भी समय

    मैं पिछले एक घंटे में कुछ उपयोगकर्ता नाम के साथ सभी रिकॉर्ड कैसे प्राप्त करूं से

  • था के लिए? क्या मुझे फिल्टर के साथ match_all का उपयोग करने की ज़रूरत है? क्या मैं असमर्थित प्रयास कर रहा हूं?

    एसक्यूएल में यह होगा कुछ की तरह:

    Select (*) from messages where user_name = ? and time > ? 
    
  • उत्तर

    15

    आप विभिन्न प्रश्नों को एक साथ गठबंधन करने के लिए bool query उपयोग करने के लिए की जरूरत है। फिर आप चुन सकते हैं कि प्रत्येक एकल क्वेरी से मेल खाना चाहिए, मिलान करना चाहिए (वैकल्पिक), या मेल नहीं होना चाहिए।

    16

    जो कोई भी इस सवाल पर लड़खड़ाती है और चमत्कार क्या यह ElasticSearch में एक मैच और रेंज क्वेरी गठबंधन करने के लिए की तरह लग रहा के लिए, इस उदाहरण

    curl 'localhost:9200/<index>/_search?pretty=true' -d '{ 
        "query" : { 
        "bool": { 
         "must": [ 
         { 
          "match": { 
          "user": "SomeUsername" 
          } 
         }, 
         { 
          "range" : { 
          "date": { 
           "gt": "now-1h" 
          } 
          } 
         } 
         ] 
        } 
        } 
    }' 
    
    +0

    मुझे कुछ काम यहां सहेजा कैसा लगेगा - धन्यवाद! – JohnJ

    +0

    क्या वे निर्दिष्ट क्रम में प्रश्न पूछे गए हैं? जैसा कि, पहली बार पाए गए उपयोगकर्ताओं पर रेंज क्वेरी लागू की जाएगी? –

    +0

    @EvaldasRaisutis मैं "मैच" में एक सूची का उपयोग करने के लिए एपीआई की पसंद के आधार पर ऐसा मानूंगा लेकिन मुझे यकीन नहीं है। –