ElasticSearch से डेटा हटाना


361

मैं ElasticSearch में नया हूँ । मैं यह पता लगाने की कोशिश कर रहा हूं कि ElasticSearch से डेटा कैसे निकाला जाए। मैंने अपने अनुक्रमित हटा दिए हैं। हालाँकि, यह वास्तव में डेटा को हटाने के लिए प्रतीत नहीं होता है। अन्य सामग्री जो मैंने देखी है, उसे हटाकर क्वैरी सुविधा द्वारा इंगित किया गया है । हालाँकि, मुझे यह भी निश्चित नहीं है कि क्या प्रश्न करना है। मैं अपनी अनुक्रमणिका जानता हूं। अनिवार्य रूप से, मुझे यह पता लगाना है कि कैसे करना है

DELETE FROM [Index]

Chrome में PostMan से। हालांकि, मुझे कोई भाग्य नहीं है। ऐसा लगता है जैसे मैं क्या करता हूं, डेटा चारों ओर लटका हुआ है। इस प्रकार अब तक, मैंने पोस्टमैन में DELETE HTTP वर्ब का उपयोग करके और url का उपयोग करके अनुक्रमित को सफलतापूर्वक हटा दिया है:

   http://localhost:9200/[indexName]

हालाँकि, यह वास्तव में स्वयं डेटा (उर्फ डॉक्स) को हटाने के लिए प्रतीत नहीं होता है।


मैं डाकिया के साथ इसकी जांच करता हूं और "{" स्वीकार किया गया ": सच}" के रूप में रिपॉज़्न किया गया है। यदि आप देखते हैं कि यह प्रतिक्रिया चिंता का विषय नहीं है। सूचकांक लोचदार से हटा दिया जाता है।
द्विजक

जवाबों:


428

आप cURLकई उपकरणों में से एक का उपयोग करके या नेत्रहीन रूप से हटा सकते हैं, जो खुले स्रोत के प्रति उत्साही ने एलेस्टिक्स खोज के लिए बनाया है।

CURL का उपयोग करना

curl -XDELETE localhost:9200/index/type/documentID

जैसे

curl -XDELETE localhost:9200/shop/product/1

फिर आपको एक उत्तर मिलेगा कि क्या यह सफल था या नहीं। आप एक पूरे सूचकांक या प्रकारों को एक सूचकांक के साथ भी हटा सकते हैं, आप दस्तावेज़ आईडी को छोड़ कर एक प्रकार को हटा सकते हैं जैसे -

curl -XDELETE localhost:9200/shop/product

यदि आप एक इंडेक्स हटाना चाहते हैं -

curl -XDELETE localhost:9200/shop

यदि आप एक से अधिक इंडेक्स को हटाना चाहते हैं, जो एक निश्चित नामकरण सम्मेलन (नोट *, वाइल्डकार्ड) का अनुसरण करता है , -

curl -XDELETE localhost:9200/.mar* 

दिखने में

ऊपर वर्णित विभिन्न उपकरण हैं, मैं उन्हें यहां सूचीबद्ध नहीं करूंगा लेकिन मैं आपको एक से जोड़ूंगा जो आपको यहां से सीधे शुरू करने में सक्षम बनाता है । इस उपकरण को KOPF कहा जाता है, अपने होस्ट से कनेक्ट करने के लिए कृपया ऊपरी बाएँ हाथ के कोने पर लोगो पर क्लिक करें और अपने क्लस्टर का URL दर्ज करें।

एक बार कनेक्ट होने के बाद आप अपने पूरे क्लस्टर को हटा सकते हैं, हटा सकते हैं, अनुकूलित कर सकते हैं और अपने क्लस्टर को ट्यून कर सकते हैं।


क्या कोई ऐसा तरीका है जिससे मैं 3 doc को हटा सकूँ जो मुझे पता है।
HIRA THAKUR

@ जयेशजैन को मेरा वर्तमान ज्ञान, नहीं। आप 3 संशोधित कर्ल -XDELETE कमांड को बैश स्क्रिप्ट में डाल सकते हैं और एक के बाद एक 3 को निष्पादित या चला सकते हैं।
ओपस्टार एलीस्टेसर्च - नाथन

@JayeshJain इसलिए कर्ल -XDELETE लोकलहोस्ट: 9200 / इंडेक्स / टाइप / docid1 // कर्ल -XDELETE लोकलहोस्ट: 9200 / इंडेक्स / टाइप / docid2 // कर्ल -XDELETE लोकलहोस्ट: 9200 / इंडेक्स / टाइप / डॉसिड 3
ओपस्टर एलिटिक्स सर्च - नाथन जूल

मैंने इसे उसी तरह से किया था। लेकिन मैं सिर्फ यह सोच रहा था कि क्या कई डॉक्स को हटाने का एक बेहतर तरीका है। यदि मैं क्षेत्र जानता हूं तो मैं शब्द का उपयोग कर सकता हूं। लेकिन इस परिदृश्य में, मुझे केवल उनकी आईडी द्वारा डॉक्स को हटाने की आवश्यकता है। Thx वैसे भी
HIRA THAKUR

2
मैं एक अवैध चरित्र के साथ एक सूचकांक कैसे हटा सकता हूं, उदाहरण के लिए, logstash-eu -% {customer} -2016.11.22। मैं सभी सूचक लॉगस्टैश-यू -% {ग्राहक} - * या लॉगस्टैश-यूआर -% * को हटाना चाहता हूं
क्रिस एफ

459

यदि आपको कभी भी सभी इंडेक्स को हटाने की आवश्यकता होती है, तो यह काम आ सकता है:

curl -X DELETE 'http://localhost:9200/_all'

शक्ति कोशिका:

Invoke-WebRequest -method DELETE http://localhost:9200/_all

20
यह विकास और वापस खरोंच (खाली) डेटाबेस को रीसेट करने की आवश्यकता के लिए बहुत उपयोगी है। धन्यवाद!!
आर्टिस्टिक

3
अपने bash_profile में इस कमांड के लिए एक उपनाम बनाएं और यह विकास के लिए काम आएगा।
user805981

2
'वाइल्डकार्ड एक्सप्रेशंस या सभी सूचकांकों की अनुमति नहीं है'
ज़ुरबवेब

1
ध्यान दें कि यह आपके एक्स-पैक एक्सेस क्रेडेंशियल्स सहित सभी डेटा को हटा देगा।
गजस

2
यह किबाना डैशबोर्ड और विज़ुअलाइज़ेशन को भी हटा रहा है
नैनो

54

प्रलेखन (या निश्चित गाइड ) का कहना है, कि आप भी नष्ट करने के लिए अगले क्वेरी का उपयोग कर सकते सभी सूचकांक:

curl -XDELETE 'http://localhost:9200/*'

और एक महत्वपूर्ण नोट है:

कुछ के लिए, एक एकल आदेश के साथ आपके सभी डेटा को हटाने की क्षमता बहुत डरावनी संभावना है। यदि आप आकस्मिक जन-विलोपन की संभावना को समाप्त करना चाहते हैं, तो आप निम्नलिखित को trueअपने में सेट कर सकते हैं elasticsearch.yml:

action.destructive_requires_name: true


30

आपको एक DELETEअनुरोध भेजना होगा

http://[your_host]:9200/[your_index_name_here]

आप किसी एकल दस्तावेज़ को भी हटा सकते हैं:

http://[your_host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]

मैं आपको इलास्टिकहैम का उपयोग करने का सुझाव देता हूं

हटाने के बाद आप देख सकते हैं कि क्या सूचकांक अभी भी निम्न URL के साथ मौजूद है: http://[your_host]:9200/_stats/

सौभाग्य!


10 दिनों से पुराने सूचकांकों को हटाने का तरीका क्या है? मैं क्यूरेटर का उपयोग नहीं कर सकता क्योंकि मेरा सर्वर समर्थन नहीं है।
बायोलिनिह

17

इंडेक्स डिलीट करने से मैपिंग डिलीट हो जाएगी और साथ टाइप हो जाएगा। आप निम्नलिखित प्रश्न द्वारा सभी पंक्तियों को हटा सकते हैं

curl -XDELETE 'localhost:9200/twitter/tweet/_query?pretty' -d'
{
   "query": { 
      "match_all": 
   }
}'

हालाँकि उपर्युक्त प्रश्न के लिए आपको डिलीट-बाय-क्वेरी प्लगइन स्थापित करना होगा क्योंकि एलीस्टेसर्च 2.0.0-बीटा 1 डिलीट-बाय-क्वेरी को मुख्य एपीआई से हटा दिया गया था

Install delete-by-query plugin

sudo bin/plugin install delete-by-query

अधिक जानकारी के लिए

http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/


प्लगइन स्थापित करने और ईएस को पुनरारंभ करने से पहले और बाद में, मुझे "यूआरआई और विधि के लिए कोई हैंडलर नहीं मिला"।
मैथ्यू

यह एलेस्टिक्सखोज 6+ में काम नहीं करता है। इसके बजाय _delete_by_query का उपयोग करें।
शैलेश प्रतापवार

17
#list all index:       curl -XGET http://localhost:9200/_cat/indices?v 

यहां छवि विवरण दर्ज करें

#delete index:         curl -XDELETE 'localhost:9200/index_name'
#delete all indices:   curl -XDELETE 'localhost:9200/_all'
#delete document   :   curl -XDELETE 'localhost:9200/index_name/type_name/document_id'

किबना स्थापित करें । किबाना में एक चालाक देव उपकरण है जो आसानी से क्वेरी बनाने में मदद करता है।

यहां छवि विवरण दर्ज करें


1
10 दिनों से पुराने सूचकांकों को हटाने का तरीका क्या है? मैं क्यूरेटर का उपयोग नहीं कर सकता क्योंकि मेरा सर्वर समर्थन नहीं है।
बायोलिनिह सेप

9
curl -X DELETE 'https://localhost:9200/_all'

यदि आप अपने अनुप्रयोग में SSL प्रमाणपत्र का उपयोग कर रहे हैं, तो httpइसे बदलेंhttps


8

आप अजगर में एक सूचकांक को निम्नानुसार हटा सकते हैं

from elasticsearch import Elasticsearch

es = Elasticsearch([{'host':'localhost', 'port':'9200'}])

es.index(index='grades',doc_type='ist_samester',id=1,body={
    "Name":"Programming Fundamentals",
    "Grade":"A"
})

es.indices.delete(index='grades')


7

क्वेरी द्वारा बड़े पैमाने पर हटाने के लिए आप क्वेरी एपीआई द्वारा विशेष डिलीट का उपयोग कर सकते हैं :

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

इतिहास में कि एपीआई को हटा दिया गया था और फिर से फिर से शुरू किया गया था

कौन दिलचस्प है इसका लंबा इतिहास है।

  1. उस उत्तर के पहले संस्करण में मैं इलास्टिसर्च संस्करण 1.6 के प्रलेखन का उल्लेख करता हूं । इसमें कि कार्यक्षमता को पदावनत के रूप में चिह्नित किया गया था, लेकिन अच्छा काम करता है।
  2. में elasticsearch संस्करण 2.0 यह अलग प्लगइन करने के लिए ले जाया गया था । और यहां तक ​​कि क्यों यह प्लगइन समझाया गया है
  3. और यह फिर से 5.0 संस्करण में कोर एपीआई में दिखाई दिया !

3
क्वेरी द्वारा डिलीट का उपयोग करके सावधान रहें। इसकी एक बड़ी वजह यह है। बाहर स्मृति त्रुटि!
user3658423

ज़रूर। लेकिन आप जासूसी कर सकते हैं यदि यह आपके लिए हुआ है या आपके पास पर्याप्त स्मृति है।
ह्यूबर्टस

1
: यह अब और पदावनत नहीं है elastic.co/guide/en/elasticsearch/reference/6.4/...
Hubbitus

5

मैं लॉगस्टैश इंडेक्स को हटाना चाहता था और कर्ल जैसे विभिन्न उपकरणों के बारे में बहुत कुछ खोजा। लेकिन अंत में समाधान मिला। Kibana में लॉगिन करें। Dev Tools टैब पर जाएं और DELETE /logstash-*क्वेरी फ़ील्ड में टाइप करें और ग्रीन एरो बटन दबाएं। यदि आपको "स्वीकार" मिलता है: जवाब में सही है जिसका अर्थ है कि डेटा साफ हो गया है।


धन्यवाद!!! मैंने कई अन्य विकल्पों की कोशिश की- यह एकमात्र ऐसा है जिसने मेरे लिए काम किया।
इलादयनई

5

सूचकांकों को सूचीबद्ध करने के लिए curl -L localhost:9200/_cat/indices

9200 डिफ़ॉल्ट पोर्ट [कुछ अन्य पोर्ट का उपयोग करने पर पोर्ट बदल दें]

आपको संभवतः सभी संकेत logstash-yyyy-mm-ddप्रारूप के साथ शुरू होंगे (logstash- *)

आप सभी सूचकांक और उपयोग देख सकते हैं

कमांड के बाद सूचकांक और डेटा ट्रिगर को हटाने के लिए।

curl -XDELETE localhost:9200/index_name (जो डेटा और सूचकांकों दोनों को हटा देगा)।


4

यहाँ बहुत सारे अच्छे उत्तर हैं, लेकिन कुछ ऐसी भी है जिसे मैं जोड़ना चाहूंगा:

  • यदि आप AWS ElasticSearch सेवा पर चल रहे हैं , तो आप अनुक्रमित को हटा / हटा नहीं सकतेडिलीट इंडेक्स के बजाय, आपको उन्हें फिर से लिखना होगा

बस AWS ElasticSearch पर एक सूचकांक हटा दिया गया, मेरा डोमेन ES 5.1 चला रहा है।
गज़ार्स्गो

2
AWS ES पर आप अनुक्रमणिका को खोल / बंद नहीं कर सकते - जिसके लिए रीइन्डेक्सिंग आवश्यक है। हालाँकि, आप अनुक्रमित को हटा सकते हैं। मैंने इसे केवल किबाना कंसोल के माध्यम से किया है, लेकिन यह निश्चित रूप से काम करता है।
टॉम ड्यूफेल

4

आप पूरे इंडेक्स, डॉक्स-टाइप या एक पर्टिकुलर आईडी डेटा को हटा सकते हैं। ये तीन तरीके हैं:

  1. कर्ल -XDELETE लोकलहोस्ट: 9200 / index_name

  2. कर्ल -XDELETE लोकलहोस्ट: 9200 / index_name / doc-type

  3. कर्ल -XDETETE लोकलहोस्ट: 9200 / index_name / doc-type / documentId

और यदि आप सभी सूचकांक को हटाना चाहते हैं तो वाइल्डकार्ड के लिए जाएं।


नमस्ते, मुझे आशा है कि प्रश्नों को निष्पादित करने से पहले आपने अपनी लोचदार खोज शुरू की थी और यह सुनिश्चित करें कि डिफ़ॉल्ट रूप से यह सभी स्थानीय पतों को बांधता है। और लोकलहोस्ट के बजाय आप अपने आईपी पते का उपयोग कर सकते हैं। जैसे 10.80.15.45:9200 और एक बार अपने ES सेटिंग की जांच करने के बाद मैं सोच सकता हूं कि network.bind_host में जांच करें और सुनिश्चित करें कि यह या तो सेट नहीं है या आपके नेटवर्क के लिए 0.0.0.0 या :: 0 या सही IP पते पर सेट है।
गौरव

3

आप 'elasticsearch सिर' में DELETE कार्रवाई का उपयोग करके सूचकांक को भी हटा सकते हैं () क्रोम प्लगइन ) । इसे अपने क्रोम में जोड़ें और इसे अपने होस्ट से कनेक्ट करें। वहां आपको अपने सभी सूचकांक मिलेंगे और यदि आप उस इंडेक्स के नीचे एक्शन बटन पर क्लिक करते हैं जिसे आप हटाना चाहते हैं, तो आपको ड्रॉप डाउन में एक DELETE विकल्प मिलेगा। उस पर क्लिक करें और पॉप-अप में DELETE दर्ज करें। आपका सूचकांक हटा दिया जाएगा। Extension एलेस्टिक्सखोज हेड ’एक्सटेंशन आपके सूचकांक और डेटा को देखने और प्रबंधित करने का एक आसान तरीका है।


2

आप सूचकांक को हटाने के लिए क्रोम एक्सटेंशन इलास्टिक्स-हेड का उपयोग कर सकते हैं


2

आप किबना कंसोल द्वारा सूचकांक को हटा सकते हैं:

कंसोल आइकन

सभी सूचकांक प्राप्त करने के लिए:

GET /_cat/indices?v

किसी विशिष्ट सूचकांक को हटाने के लिए:

DELETE /INDEX_NAME_TO_DELETE

1

आप एक या अधिक सूचकांकों को हटा सकते हैं , जो वास्तव में डिस्क से उनकी फ़ाइलों को हटाते हैं । उदाहरण के लिए:

curl -XDELETE localhost:9200/$INDEXNAME

$INDEXNAMEसूचकांक नाम (जैसे users_v2) कहां हो सकता है , अल्पविराम द्वारा अलग किए गए एन सूचकांक (जैसे users_v2,users_v3)। एक अनुक्रमणिका प्रतिमान (जैसे users_*) या _all, यह भी काम करता है, जब तक कि यह विन्यास में अवरुद्ध न हो action.destructive_requires_name: true

व्यक्तिगत दस्तावेजों को हटाना संभव है, लेकिन यह तुरंत उन्हें शुद्ध नहीं करेगा । डिलीट केवल एक सॉफ्ट डिलीट है, और सेगमेंट मर्ज के दौरान डॉक्यूमेंट्स को वास्तव में हटा दिया जाता है । आपको इस प्रस्तुति में सेगमेंट और मर्ज के बारे में बहुत सारे विवरण मिलेंगे । यह सोलर के बारे में है, लेकिन मर्ज ल्यूसीन से हैं, इसलिए आपके पास एलीटेसर्च में समान विकल्प हैं।

एपीआई पर वापस, आप या तो आईडी द्वारा अलग-अलग दस्तावेजों को हटा सकते हैं (यदि आप रूटिंग के साथ इंडेक्स करते हैं तो एक रूटिंग वैल्यू प्रदान करें):

curl -XDELETE localhost:9200/users_v2/_doc/user1

या प्रश्न द्वारा:

curl -XPOST -H 'Content-Type: application/json' localhost:9200/users_v2/_delete_by_query -d '{
  "query": {
    "match": {
      "description_field": "bad user"
    }
  }
}'

0

मान लें कि मुझे एक इंडेक्स को हटाने की आवश्यकता है filebeat-7.6.2-2020.04.30-000001और मैंने इसे नीचे दिए गए प्रमाणीकरण समस्या में एक कर्ल DELETE विकल्प ( curl -X DELETE "localhost:9200/filebeat-7.6.2-2020.04.30-000001?pretty") और परिणाम का उपयोग करके किया ;

{
  "error" : {
    "type" : "security_exception",
    "reason" : "missing authentication credentials for REST request [/filebeat-7.6.2-2020.04.30-000001?pretty]"
  },
  "status" : 401
}

यहां आपको उस उपयोगकर्ता नाम और पासवर्ड का उपयोग करके कर्ल अनुरोध को प्रमाणित करना चाहिए जिसे आपने एलीस्टेकर्च के लिए प्रदान किया है। फिर कोशिश करें

curl -X DELETE -u myelasticuser:myelasticpassword "localhost:9200/filebeat-7.6.2-2020.04.30-000001?pretty"

{"स्वीकृत": सत्य} में परिणाम होगा ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.