मेरे पास Elasticsearch में निम्न सहेजा गया json डेटा है:

   {
   "id":"1234",
   "expirationDate":"17343234234",
   "paths":"http:localhost:9090",
   "work":"software dev",
   "family":{
      "baba":"jams",
      "mother":"ela"
   }
},
{
   "id":"00021",
   "expirationDate":"0123234",
   "paths":"http:localhost:8080",
   "work":"software engi",
   "family":{
      "baba":"stev",
      "mother":"hela"
   }
}

मैं आईडी की सभी सूची को हटाना चाहता हूं, जो इसकी समाप्ति तिथि स्प्रिंगडेटा Elasticsearch में QueryBuilder का उपयोग करके आज से छोटी हैं

6
Catalina 22 अक्टूबर 2020, 21:24

1 उत्तर

सबसे बढ़िया उत्तर

खैर, क्वेरी द्वारा हटाएं जाने का रास्ता है।

POST /{your_index_name}/_delete_by_query
{
  "query": {
    "range": {
      "expirationDate": {
        "lt": "{your_timestamp}"
      }
    }
  } 
}

java क्लाइंट दस्तावेज़ीकरण इंगित करता है कि आप इस तरह से एक अनुरोध बना सकते हैं:

BulkByScrollResponse response =
  new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
    .filter(QueryBuilders.matchQuery("gender", "male")) 
    .source("persons")                                  
    .get();                                             
long deleted = response.getDeleted();

इसे के रूप में चिह्नित किया गया है संस्करण 3.2 के बाद से स्प्रिंग-डेटा-इलास्टिक्स खोज द्वारा समर्थित है।

उदाहरण के लिए आप क्वेरी व्युत्पत्ति< का उपयोग कर सकते हैं /ए> :

क्वेरी विधियों के अलावा, क्वेरी व्युत्पत्ति दोनों गणना और हटाने के लिए उपलब्ध है।

परिशिष्ट सी में, आप देख सकते हैं कि IsLessThan एक क्वेरी व्युत्पत्ति कीवर्ड है, जिसका अर्थ है कि इन पंक्तियों के साथ कुछ बॉक्स के बाहर समर्थित होना चाहिए:

interface YourRepository extends CrudRepository<User, Long> {
  long deleteByExpirationDateIsLessThan(long timestamp);
}

क्वेरी व्युत्पत्ति का उपयोग करके, आप वसंत को कार्यान्वयन करने दे रहे हैं (उंगलियों ने पार किया कि यह "सही काम करेगा")।

लेकिन आप ElasticsearchRestTemplate#delete (यदि आप पुराने ElasticsearchTemplate का उपयोग कर रहे हैं, तो यह वही काम करता है)।

यह आपको किसी भी स्प्रिंग-डेटा क्वेरी (मूल, स्ट्रिंग, या मानदंड) में पास करने की अनुमति देता है।

7
GPI 6 नवम्बर 2020, 16:17