मैं अपने आवेदन में समापन सुझावकर्ता लागू कर रहा हूं, और यहां मेरी आवश्यकता है:

मैं इलास्टिक्स खोज 5.5.3 का उपयोग कर रहा हूं (जो कई प्रकार का समर्थन करता है)। मेरी इलास्टिक्स खोज में लगभग १० प्रकार हैं और प्रत्येक प्रकार में लगभग १० स्ट्रिंग फ़ील्ड हैं। मैं जो करना चाहता हूं वह एक एकल खोज बॉक्स बनाना है, जो वाक्यांश (उन 10 प्रकारों के किसी भी क्षेत्र में) को पूरा करेगा क्योंकि उपयोगकर्ता पूर्णता सुझावकर्ता का उपयोग करके टाइप करना शुरू कर देता है। इसका सबसे अच्छा तरीका क्या हो सकता है? क्या _all फ़ील्ड का उपयोग करना एक अच्छा विचार है?

0
Yashasvi Raj Pant 3 मई 2019, 00:03

1 उत्तर

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

हां, यह "कस्टम सभी फ़ील्ड" प्रकार का फ़ील्ड completion

सबसे पहले, सभी प्रकार के साथ इंडेक्स बनाएं और सुनिश्चित करें कि completion प्रकार के कस्टम फ़ील्ड में प्रत्येक फ़ील्ड को >कॉपी करें:

PUT my_index
{
  "mappings": {
    "type1": {
      "properties": {
        "field1": {
          "type": "text",
          "copy_to": "my_all"
        },
        "field2": {
          "type": "text",
          "copy_to": "my_all"
        },
        "my_all": {
          "type": "completion"
        }
      }
    },
    "type1": {
      "properties": {
        "field1": {
          "type": "text",
          "copy_to": "my_all"
        },
        "field2": {
          "type": "text",
          "copy_to": "my_all"
        },
        "my_all": {
          "type": "completion"
        }
      }
    }
  }
}

फिर, आप इस तरह से पूर्णता डेटा को क्वेरी करेंगे (अर्थात किसी मैपिंग प्रकार को निर्दिष्ट किए बिना और सामान्य my_all फ़ील्ड का उपयोग किए बिना):

POST my_index/_search
{
  "suggest": {
    "my-suggest": {
      "prefix": "bla",
      "completion": {
        "field": "my_all"
      }
    }
  }
}
1
Val 3 मई 2019, 03:44