Correct type for getting analytical data in elasticsearch -


Elasticsearch में मेरे पास निम्नलिखित प्रकार (केवल इसका हिस्सा) है

  "diff"  

: ["नाम": "राज्य", "पुरानाव्यू": "ऑनलाइन", "नया मूल्य": "ऑफ़लाइन"}, {"नाम": "लागत", "पुरानाव्यू": 2000, "नया मूल्य": 5000}]

भिन्न प्रकार का एक सरणी नाम , पुराने वैल्यू और newValue है। अब, पुराना वैल्यू में स्ट्रिंग मान और पूर्णांक मान हो सकते हैं मैं एनालिटिक्स जैसे टाइमरेंज चाहता हूं, जिसमें से cost 2000 या टाइमरेंज से ऊपर था, जिसमें से state ऑनलाइन था इस तरह की सैकड़ों विशेषताओं हो सकती हैं।

समस्या यह है कि मैं केवल एक ही प्रकार का पुराना मूल्य और नया वेल्यू, स्ट्रिंग या पूर्णांक दे सकता हूं।

मैं इस समस्या का कैसे समाधान करूँ?

कुछ की सरणी के साथ यह परीक्षण नहीं किया है (क्योंकि आपने इसे नेस्टेड या वस्तु का उल्लेख नहीं किया है), / p> लेकिन मैंने एक साधारण फ़ील्ड के साथ किया:

  PUT / some_index {"mappings": {"some_type": {"गुण": {"name": {"type": "string", "Copy_to": "name.int"}, "name.int": {"type": "integer", "ignore_malformed": true}}}}}  

तब कुछ सूचकांक परीक्षण डेटा:

  POST / some_index / some_type / 1 {"नाम": "2000"} POST / some_index / some_type / 2 {"name": "परीक्षण"} POST / some_index / some_type / 3 {"नाम": 2000}  

और परीक्षण:

  प्राप्त करें / some_index / some_type / _search {"query": {"श्रेणी": {"Name.int" : {"से": 1999}}}, "फ़ील्ड": ["नाम", "name.int"]}  

और कुछ और परीक्षण (दोनों के लिए "संस्करण" फ़ील्ड "):

  GET / some_index / some_type / _search {" query ": {" bool ": {" चाहिए ": [{" श्रेणी ": {" name.int ": { "" ":" "" ":"} ", {" Match ": {" name ":" testing "}}}}}," fields ": [" name "," name.int "]}   

Comments