5

लक्ष्य कुछ निगरानी काउंटरों और राज्यों की वर्तमान स्थिति को ट्रैक करने के लिए संबंधित दस्तावेजों के समूहों में केवल हालिया दस्तावेजों के साथ एक लोचदार खोज सूचकांक का निर्माण करना है।एक इंडेक्स में एकत्रीकरण परिणाम डालें

मैं एक साधारण Elasticsearch एकत्रीकरण क्वेरी तैयार किया है:

{ 
    "size": 0, 
    "aggs": { 
    "group_by_monitor": { 
     "terms": { 
     "field": "monitor_name" 
     }, 
     "aggs": { 
     "get_latest": { 
      "top_hits": { 
      "size": 1, 
      "sort": [ 
       { 
       "timestamp": { 
        "order": "desc" 
       } 
       } 
      ] 
      } 
     } 
     } 
    } 
    } 
} 

यह बाल्टी में संबंधित दस्तावेजों समूहों और प्रत्येक बकेट के लिए सबसे हाल ही में दस्तावेज़ का चयन करें।

यहां विभिन्न विचारों मैं काम किया जाना था इस प्रकार हैं:

  1. सीधे सूचकांक में परिणाम पुश करने के लिए एकत्रीकरण क्वेरी का उपयोग, लेकिन यह संभव नहीं लगता है: Is it possible to put the results of an ElasticSearch aggregation back into the index?
  2. का उपयोग LogstashElasticsearch input plugin एकत्रीकरण क्वेरी और Elasticsearch output plugin सूचकांक में पुश करने के लिए निष्पादित करने के लिए, लेकिन इनपुट प्लगइन की तरह लगता है केवल hits क्षेत्र को देखता है और एकत्रीकरण परिणाम संभालने में असमर्थ है: Aggregation Query possible input ES plugin!
  3. JSON दस्तावेज़ प्राप्त करने के लिए लॉगस्टैशhttp_poller plugin का उपयोग करें, लेकिन ऐसा लगता है कि HTTP अनुरोध के लिए किसी शरीर को निर्दिष्ट करने की अनुमति नहीं है!
  4. JS12 प्राप्त करने के लिए curl कमांड निष्पादित करने के लिए लॉगस्टैशexec plugin का उपयोग करें, लेकिन यह काफी बोझिल और मेरा अंतिम उपाय लगता है।
  5. NEST API का उपयोग एक मूल अनुप्रयोग बनाने के लिए करें जो मतदान करेगा, परिणाम निकाल देगा, उन्हें साफ करेगा और परिणामी दस्तावेजों को लक्षित सूचकांक में इंजेक्ट करेगा, लेकिन मैं बनाए रखने के लिए एक नया टूल जोड़ने से बचना चाहता हूं।

क्या यह पूरा करने का एक उचित जटिल तरीका है?

+2

[चौकीदार] (https://www.elastic.co/guide/en/watcher/current/index.html)? –

+0

@AndreiStefan धन्यवाद लेकिन AFAIK वॉचर इस उपयोग के मामले में मदद नहीं करेगा। इसके अलावा हमारे पास हमारे बुनियादी ढांचे पर तैनात नहीं है (अभी तक?)। चेतावनी के लिए हम ** ElastAlert ** का उपयोग करते हैं जो पूरी तरह से नौकरी करता है। – Pragmateek

+1

मैं चेतावनी के लिए वॉचर का सुझाव नहीं दे रहा हूं, लेकिन [इंडेक्स से पूछताछ] करने में सक्षम होने के लिए (https://www.elastic.co/guide/en/watcher/current/changing-inputs.html#loading-search-results) नियमित अंतराल पर, परिणामस्वरूप डेटा पर कुछ [मूल परिवर्तन] (https://www.elastic.co/guide/en/watcher/current/using-transforms.html) करें और [Elasticsearch में वापस अनुक्रमणित करें ] (https://www.elastic.co/guide/en/watcher/current/actions.html#actions-index)। –

उत्तर

2

संपादित logstash.conf फ़ाइल के रूप में पालन

input { 
    elasticsearch { 
    hosts => "localhost" 
    index => "source_index_name" 
    type =>"index_type" 
    query => '{Query}' 
    size => 500 
    scroll => "5m" 
    docinfo => true 
    } 
} 

output { 
    elasticsearch { 
    index => "target_index_name" 
    document_id => "%{[@metadata][_id]}" 
    } 
} 
+0

क्या यह अब लॉगस्टैश के एक फिक्स के लिए धन्यवाद कर रहा है? क्योंकि सवाल के समय लॉगस्टैश एकत्रीकरण को संभालने में काम नहीं कर रहा था। – Pragmateek

+0

yup इसके काम करने के बाद मैंने कल इसे केवल ईएलके (5.1.1) पर आजमाया –

+0

ठीक है, मैं आपको भरोसा करता हूं, आपको मेरा +1 मिलता है। :) – Pragmateek

संबंधित मुद्दे