2016-05-18 10 views
5

सुविधा जो मैं पूर्ण करने की कोशिश करता हूं वह किबाना में एक मीट्रिक बनाने के लिए है जो उपयोगकर्ताओं की संख्या को "असंबद्ध" प्रदर्शित करता है। जब कोई उपयोगकर्ता पंजीकृत होता है तो मैं एक लॉग भेजता हूं, फिर उपयोगकर्ता द्वारा मान्य होने पर लॉग होता है।फ़ील्ड [] अभिव्यक्ति में प्रयुक्त होता है मैपिंग

तो मैं जो गिनती चाहता हूं वह पंजीकृत की संख्या और मान्य की संख्या के बीच का अंतर है।

kibana में मैं इस तरह के एक गणित आपरेशन नहीं कर सकते, तो मैं एक समाधान मिला: मैं एक "की पटकथा लिखी क्षेत्र" जोड़ा नाम "अमान्य" जो 1 के बराबर है एक उपयोगकर्ता रजिस्टरों और -1 एक उपयोगकर्ता अपने खाते की पुष्टि करता है जब जब । "अप्रत्याशित" फ़ील्ड का योग असंबद्ध उपयोगकर्ताओं की संख्या होना चाहिए। साथ doc['ctxt_code'].value == 1 ? 1 : doc['ctxt_code'].value == 2 ? -1 : 0

:

यह स्क्रिप्ट मैं अपने पटकथा के क्षेत्र में परिभाषित किया गया है मान्य लॉग के रूप में रजिस्टर लॉग के रूप में

  • ctxt_code 1

  • ctxt_code 2

यह से TUP जब मेरे सभी लॉग एक "ctxt_code" है अच्छी तरह से काम करता है, लेकिन जब इस क्षेत्र के बिना एक लॉग धकेल दिया जाता है kibana निम्न त्रुटि फेंकता है:

Field [ctxt_code] used in expression does not exist in mappings kibana error

मैं यह त्रुटि नहीं समझ सकता क्योंकि kibana का कहना है:

If a field is sparse (only some documents contain a value), documents missing the field will have a value of 0

जो मामला है।

किसी के पास कोई सुराग है?

+0

तुम फ्रेंच हैं, तो आप हमें Elasticsearch फ्रेंच मंच पर मदद कर सकते हैं: https://discuss.elastic.co/t/kibana-probleme-de-scripted-field-qui-nexiste-soit-disant-pas-dans-le-mapping/50618 – lenybernard

+0

क्या आप निश्चित हैं कि फ़ील्ड 'ctxt_code' मैपिंग में मौजूद है आपके सभी लॉगस्टैश इंडेक्स का? मैं पिछले सात दिनों में स्क्रीनशॉट के ऊपरी दाएं भाग पर देख रहा हूं, क्या आप यह सुनिश्चित कर सकते हैं कि पिछले सात दिनों के लॉगस्टैश इंडेक्स में बनाए गए मैपिंग में 'ctxt_code' फ़ील्ड है? – Val

+0

कोई समाचार अच्छी खबर नहीं है? – Val

उत्तर

2

यह ctxt_code क्षेत्र के बिना लॉग के लिए ठीक है ... लेकिन आप अपने सूचकांक में इस क्षेत्र के लिए एक मानचित्रण करना होगा। मुझे लगता है कि आप logstash-* के साथ कई इंडेक्स पूछ रहे हैं, इसलिए आप शायद उस व्यक्ति को मार रहे हैं जिसमें यह नहीं है।

आप सभी क्षेत्रों में अपने क्षेत्र के लिए मैपिंग शामिल कर सकते हैं। बस Sense में जाकर का उपयोग करें:

PUT logstash-*/_mappings/[your_mapping_name] 
{ 
    "properties": { 
    "ctxt_code": { 
     "type": "short",   // or any other numeric type, including dates 
     "index": "not_analyzed" // Only works for non-analyzed fields. 
    } 
    } 
} 

क्या आप कमांड लाइन से यह कर सकते हैं पसंद करते हैं: CURL -XPUT 'http://[elastic_server]/logstash-*/_mappings/[your_mapping_name]' -d '{ ... same JSON ... }'

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