2013-04-22 8 views
10

मैं एक लोचदार सूची सूचकांक में किसी विशिष्ट संपत्ति के लिए सभी प्रविष्टियों को हटाने और उस संपत्ति के लिए सभी प्रकार के मैपिंग को हटाने का दृष्टिकोण जानने का प्रयास कर रहा हूं।लोचदार खोज मानचित्रण संपत्ति हटाएं

मैं निम्नलिखित दो डॉक पृष्ठों को देखना किया गया है: put mapping और delete mapping

दूसरी कड़ी से

:।

"अपने डेटा के साथ एक मानचित्रण (प्रकार) हटाने दें बाकी endpoint DELETE विधि के साथ/{index}/{type} है। "

मुझे क्या लगता है कि मुझे चाहिए /{index}/{type}/{property}?

क्या मुझे इसे पूरा करने के लिए पूरी अनुक्रमणिका को फिर से बनाने की आवश्यकता है, यानी प्रकारों के बीच डेटा को स्थानांतरित करना और छेड़छाड़ करना?

उदाहरण के लिए, मानचित्रण पर मिलता बुला:

curl -XGET 'http://.../some_index/some_type/_mapping' 

परिणाम:

{ 
    "some_type": { 
    "properties": { 
     "propVal1": { 
     "type": "double", 
     "index": "analyzed" 
     }, 
     "propVal2": { 
     "type": "string", 
     "analyzer": "keyword" 
     }, 
     "propVal3": { 
     "type": "string", 
     "analyzer": "keyword" 
     } 
    } 
    } 
} 

propVal3 पर इसे हटाना ऑपरेशन के बाद वापसी होगी:

curl -XGET 'http://.../some_index/some_type/_mapping' 

परिणाम:

{ 
    "some_type": { 
    "properties": { 
     "propVal1": { 
     "type": "double", 
     "index": "analyzed" 
     }, 
     "propVal2": { 
     "type": "string", 
     "analyzer": "keyword" 
     } 
    } 
    } 
} 

और propVal3 के लिए सभी डेटा इंडेक्स के माध्यम से हटा दिए जाएंगे।

उत्तर

15

आप ऐसा नहीं कर सकते हैं। बस भूलें कि यह मान मौजूद है ... ;-) यदि आपको वास्तव में इसे हटाने की आवश्यकता है, तो आपको अपने दस्तावेज़ों को दोबारा जोड़ना होगा।

+0

प्रतिक्रिया के लिए धन्यवाद। मुझे लगता है कि मुझे ऐसा करने की आवश्यकता होगी। "Reindexing" के माध्यम से ऐसा करने के लिए सबसे अच्छी रणनीति क्या है? मुझे एहसास है कि यह एक प्रदर्शन दुःस्वप्न होने जा रहा है ... लेकिन आप यहां कौन सी रणनीति लेंगे? एक और प्रकार (प्रक्रिया में संपत्ति को हटाने) और फिर एक विकल्प फिर से चल रहा है? –

+0

इस प्रश्न का एक फॉलोअप बनाया गया: http://stackoverflow.com/questions/16159902/elasticsearch-reindex-or-flag-deleted-type-property –

+0

दस्तावेज़ीकरण क्यों कहता है यह संभव है?या मैंने इसे गलत समझा? – brupm

3

मैपिंग से संपत्ति को निकालना वर्तमान में संभव नहीं है। सभी रिकॉर्ड्स से किसी संपत्ति के सभी मूल्यों को हटाने के लिए, आपको इस संपत्ति के साथ हटाए गए सभी रिकॉर्ड्स को पुन: संशोधित करने की आवश्यकता है।

+0

कैसे कर बिना अनुक्रमित संशोधित कर सकते हैं तुम वो करते हो? –

+1

@TheRedPea [reindex API] का उपयोग कर (https://www.elastic.co/guide/en/elasticsearch/reference/2.3/docs-reindex.html) उदाहरण के लिए या elasticsearch के लिए उपलब्ध कई रीइंडेक्स स्क्रिप्ट्स में से एक। – imotov

2

आप इसके लिए नए _reindex एपीआई का उपयोग कर सकते हैं, तो आप रीइन्डेक्स चलाने से पहले एक नया _mapping भी डिस्ट इंडेक्स में डाल सकते हैं ताकि आप अपने इंडेक्स में फ़ील्ड के गुणों को बदल सकें।

एक अनुक्रमणः और ऐसा करने के लिए एक संपत्ति को दूर करने के लिए, आप यह कर सकते हैं:

POST /_reindex 
{ 
    "source": { 
    "index": "twitter" 
    }, 
    "dest": { 
    "index": "new_twitter", 
    }, 
    "script": { 
    "inline": "ctx._source.remove('whatever')" 
    } 
} 

अगर आप _aliases API के साथ संयोजन में इस का प्रयोग करेंगे तो आप किसी भी 'अन्तराल'

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