मैं जो खोजता हूं उसके लिए मुझे बिल्कुल हिट प्राप्त करने की आवश्यकता है। मान लें कि हमारे पास सिंगल फ़ील्ड (user.created_at) और इस तरह की सामग्री के साथ 3 दस्तावेज़ हैं:

Wed Mar 04 09:14:25 +0000 2020
Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020

तब रॉ में मेरी क्वेरी है

 {
    "query": {
        "bool": {
            "must": [
                {
                    "wildcard": {
                        "user.created_at.keyword": "*2020"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "25"
                    }
                }
            ]
        }
    }
}

मैं केवल बुध मार्च २५ के लिए खोजना चाहता था, ऐसा हो सकता है, कि मुझे परिणाम हिट दिखाते रहें जिसमें बुध मार्च ०४ ०९:१४:२५ +०००० २०२० शामिल हैं:

Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020
Wed Mar 04 09:14:25 +0000 2020

वैसे भी, फ़ील्ड प्रकार स्ट्रिंग है, मुझे मैपिंग प्रकार को आज तक अपडेट करने का कोई विचार नहीं है। एक त्रुटि की तरह

{
 error: {
  root_cause: [
   {
    type: "resource_already_exists_exception",
    reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
    index_uuid: "KyzdFVn4RnCicyphDFBW-w",
    index: "final"
   }
  ],
  type: "resource_already_exists_exception",
  reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
  index_uuid: "KyzdFVn4RnCicyphDFBW-w",
  index: "final"
 },
 status: 400
}

मैं पूरी तरह से विचार से बाहर हूँ। कृपया मेरी मदद करें!

0
Muhammad Jaury 1 अप्रैल 2020, 08:31

1 उत्तर

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

आप match_phrase क्वेरी का इस्तेमाल कर सकते हैं 0 की ढलान के साथ। यह विशिष्ट क्वेरी सुनिश्चित करेगी कि सभी शर्तें क्रम में पाई जाती हैं।

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "user.created_at.keyword": "*2020"
          }
        },
        {
          "match_phrase": {
            "user.created_at": {
              "slop": 0,
              "query": "Wed Mar 25"
            }
          }
        }
      ]
    }
  }
}

यह सभी मामलों को संभाल नहीं पाएगा, लेकिन "Wed Mar 25" की खोज करने पर आपको केवल

Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020
0
Pierre Mallet 1 अप्रैल 2020, 08:01