पर अपडेट करने के बाद नेस्टेड जियोपॉइंट का पता लगाने में असमर्थ हम एडब्ल्यूएस प्रबंधित एलैस्टिकसेर्च सेवा का उपयोग करते हैं और हाल ही में 1.5 से 2.3 तक अपग्रेड किए गए हैं। हम अपने प्रश्नों को बनाने के लिए पाइथन में elasticsearch-dsl पैकेज का उपयोग करते हैं और हमारे अधिकांश प्रश्नों को माइग्रेट करने में कामयाब रहे हैं, लेकिन geo_distance टूट गया है चाहे मैं कोशिश करता हूं।elasticsearch 2.3
मैपिंग:
{
'company': {
'properties': {
'id': {'type': 'integer'},
'company_number': {'type': 'string'},
'addresses': {
'type': 'nested',
'properties': {
'postcode': {'type': 'string', 'index': 'not_analyzed'},
'location': {'type': 'geo_point'}
}
}
}
}
}
अजगर elasticsearch-डीएसएल == के साथ काम करने 0.0.11
test_location = '53.5411062377, -2.11485504709'
test_distance = "3miles"
location_filter = F("geo_distance",
location=test_location,
distance=test_distance)
query = query.filter("nested",
path="addresses",
filter=location_filter)
पुस्तकालय द्वारा उत्पन्न क्वेरी कोड:
{'query': {'filtered': {'filter': {'nested': {'filter': {'geo_distance': {'distance': u'3miles', 'location': '53.5411062377, -2.11485504709'}}, 'path': 'addresses'}}, 'query': {'match_all': {}}}}}
हम एक ब्रांड बनाया है एक ही मैपिंग के साथ एक नए 2.3 पर नई अनुक्रमणिका।
elasticsearch-डीएसएल के लिए == 2.1.0 अद्यतन करने और प्रश्नों के लिए फिल्टर परिवर्तित करने के लिए प्रयास करने के बाद:
geo_query = Q({"bool": {
"must": [
{
"geo_distance": {
"distance": "test_distance",
"addresses__location": test_location,
}
},
]
}})
कि निम्न क्वेरी उत्पन्न करता है:
{'query': {'bool': {'must': [{'geo_distance': {'distance': '3 miles', u'addresses.location': {'lat': '53.5411062377', 'lon': '-2.11485504709'}}}]}}}
हम निम्नलिखित अपवाद:
RequestError: TransportError(400, u'search_phase_execution_exception', u'failed to find geo_point field [addresses.location]')
मैं 'स्थान', 'addresses.location', 'विज्ञापन के रूप में क्षेत्र को संदर्भित करने की कोशिश की कपड़े 'और पुराने नेस्टेड क्वेरी प्रकार का उपयोग कर। मैं यह नहीं समझ सकता कि मैपिंग 2.3 में मान्य नहीं है या यदि मैं गलत क्वेरी का निर्माण कर रहा हूं।
RequestError: TransportError(400, u'search_phase_execution_exception', u'[nested] nested object under path [addresses.location] is not of nested type')
मुझे लगता है मैं lat_lon जोड़ने की जरूरत:
क्वेरी
Q({'nested': {'filter': {
'geo_distance': {'distance': u'3miles', 'location': '53.5411062377, -2.11485504709'}
},
'path': 'addresses.location'}})
निम्न त्रुटि उत्पन्न करता है geodistance प्रश्नों काम करने के लिए मानचित्रण के लिए यह सच है, लेकिन उदाहरण में से कोई भी यह है ।
किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद!
'' path' होना चाहिए addresses' और 'geo_distance' फिल्टर में आप' बजाय सिर्फ '" स्थान "के" addresses.location "' 'होना आवश्यक है – Val
खेद है कि मैं 'प्लेसमेंट' के साथ, कोशिश की है। – marklar
क्या आप नीचे दिए गए उत्तर का प्रयास कर सकते हैं? – Val