2015-06-26 5 views
13

लोचदार खोज NEST का उपयोग करके, मुझे अपने प्रश्नों से अपेक्षित परिणाम प्राप्त करने में परेशानी हो रही है। मेरे सूचकांक/प्रकार लेआउट इस प्रकार है:लोचदार खोज NEST खोज कई प्रकार और सभी फ़ील्ड

  • थिएटर (इंडेक्स)
    • घटना (प्रकार)
    • थिएटर
    • पदोन्नति
    • सामान्य सामग्री

उनमें से प्रत्येक प्रकार के अपने क्षेत्र हैं, और मैं डेटा इंडेक्स करने के लिए एनईएसटी इंडेक्स() विधि का उपयोग कर रहा हूं। इस बात की पुष्टि कर सकते हैं कि यह ठीक से द्वारा अनुक्रमित किया जा रहा है:

// TODO: Put settings in config 
var node = new Uri("http://localhost:9200"); 
var connSettings = new ConnectionSettings(node); 
connSettings.SetDefaultIndex("theatres"); 
connSettings.ThrowOnElasticsearchServerExceptions(); 

var client = new ElasticClient(connSettings); 
:

  • http://localhost:9200/theatres/_mapping
  • को देखते हुए डेटा

संदर्भ के लिए देखने के लिए Head प्लगइन का उपयोग करना, यहाँ मेरे मुवक्किल विन्यास है

प्रश्न

अब, क्वेरी के लिए, मैं सभी प्रकार और सभी अनुक्रमणिका के भीतर फ़ील्ड खोजना चाहता हूं। प्रमुख प्लगइन का उपयोग करना, मैं क्वेरी पैदा करते हैं और अपेक्षित परिणाम प्राप्त करने में सक्षम हूँ: enter image description here

कि पंक्ति पर यह उत्पन्न का उपयोग करना, मैं निम्नलिखित घोंसला क्वेरी की कोशिश की:

var query = "waukesha"; // This would be passed in 

var resp = client.Search<dynamic>(s => s 
    .From(0) 
    .Take(10) 
    .Query(qry => qry 
     .Bool(b => b 
     .Must(m => m 
      .QueryString(qs => qs 
       .DefaultField("_all") 
       .Query(query)))))); 

बहरहाल, यह मुझे देता है एक अलग परिणाम क्या एनईएस उन दृश्यों के पीछे कुछ कर रहा है जिनके बारे में मुझे पता नहीं है? या यह समर्थित नहीं है?

+0

मैं .Take (20) के बजाय .Size (10) सुझाव है कि बस के लिए त्रुटि के लिए एक चर के रूप में हटा दें, हालांकि कार्यक्षमता वही होना चाहिए। इसके अलावा मुझे विश्वास है कि आप हटा सकते हैं। डीफॉल्टफिल्ड और सभी फ़ील्ड की खोज की जाएगी। क्या आप कोशिश कर सकते हैं? मैं इस –

+1

@ डैनियलहोफमैन-मित्सरलिंग के बारे में उत्सुक हूं, मैंने इसे अपडेट किया है और मुझे 0 परिणाम मिलते हैं, जब मुझे 1. –

+1

प्राप्त करना चाहिए तो अजीब! क्या आप डिफ़ॉल्ट फ़ील्ड ("_ सब") वापस जोड़ सकते हैं और जोड़ सकते हैं। AllTypes()? सभी प्रकार के साथ एक प्रश्न बनाने के लिए मैन्युअल रूप से एनईटी को मजबूर करने से हमें अधिक जानकारी मिल सकती है –

उत्तर

17

आपकी क्वेरी .AllTypes()

याद आ रही है तुम भी .Types("type1", "type1")

तो का उपयोग कर कई प्रकार निर्दिष्ट कर सकते हैं:

var query = "waukesha"; // This would be passed in 

var resp = client.Search<dynamic>(s => s 
    .AllTypes() 
    .From(0) 
    .Take(10) 
    .Query(qry => qry 
     .Bool(b => b 
     .Must(m => m 
      .QueryString(qs => qs 
       .DefaultField("_all") 
       .Query(query)))))); 
+0

क्या हम यहां टाइप आधारित टर्म फ़िल्टर का उपयोग कर सकते हैं। उदाहरण: दो प्रकार: "टाइप 1", "टाइप 2" टाइप 1 होने: नाम, लोकेशन, टाइप 2 होने: देशव्यापी और राज्य इसका उपयोग करके हम यहां प्रकार आधारित टर्म फ़िल्टर कैसे प्राप्त कर सकते हैं? –

+0

@ मोहनगोपी - हां: 'टाइप ()। टाइप ()' –

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