2013-04-09 5 views
5

के साथ भू-स्थानिक मार्कर क्लस्टरिंग मेरे पास संबंधित अक्षांश और अक्षांश (geo_point प्रकारों के रूप में संग्रहीत) के साथ एक लोचदार सूची सूचकांक में कई सौ हजार दस्तावेज़ हैं। मैं एक नक्शे के दृश्य है कि कुछ इस तरह दिखता बनाने में सक्षम होना चाहते हैं: http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.htmlelasticsearch

तो, मुझे लगता है कि मैं चाहता हूँ (बाउंडिंग बॉक्स के साथ एक प्रश्न यानी, नक्शा सीमाओं कि उपयोगकर्ता को देख रहा है चलाने के लिए है) और इस बाउंडिंग बॉक्स के भीतर क्लस्टर का सारांश लौटाएं। क्या लोचदार खोज में इसे पूरा करने का कोई अच्छा तरीका है? शायद एक नई अनुक्रमणिका रणनीति? Geohashes की तरह कुछ काम कर सकता है, लेकिन यह उपरोक्त उदाहरण में देखा बिंदु बिंदु के आधार पर मनमानी बहुभुज के बजाय आयताकार ग्रिड में चीजों को क्लस्टर करेगा।


@ कुमेटिक्स - अच्छा सवाल। मैं आपकी टिप्पणी का जवाब यहां दे रहा हूं क्योंकि पाठ एक और टिप्पणी में रखना बहुत लंबा था। Geohash_precision सेटिंग अधिकतम परिशुद्धता को निर्देशित करेगी जिस पर एक भू-समेकन वापस लौटने में सक्षम होगा। उदाहरण के लिए, यदि geohash_precision 8 पर सेट किया गया है, तो हम उस क्षेत्र पर सबसे सटीक 8 के साथ भूगोल एकत्रीकरण चला सकते हैं। यह reference के अनुसार, 38.2m x 19m के भू-बूट बॉक्स में समूहित रिटर्न परिणाम होगा। 7 या 8 की सटीकता संभवतया उपर्युक्त उदाहरण में वर्णित वेब-आधारित हीटमैप दिखाने के लिए पर्याप्त सटीक होगी।

जहां तक ​​geohash_precision क्लस्टर आंतरिक को प्रभावित करता है, मैं सेटिंग को अनुमान लगा रहा हूं कि geo_point के अंदर लंबाई < = geohash_precision की सेटिंग है। मान लें कि हमारे पास स्टेच्यू ऑफ लिबर्टी: 40.68 9 2, -74.0444 पर एक बिंदु है। इसके लिए geohash12 है: dr5r7p4xb2ts। 8 geo_point में geohash_precision स्थापना आंतरिक रूप से तार की दुकान होगा: घ डॉ DR5 dr5r dr5r7 dr5r7p dr5r7p4 dr5r7p4x

और 12 की एक geohash_precision अतिरिक्त आंतरिक रूप से तार की दुकान होगा: dr5r7p4xb dr5r7p4xb2 dr5r7p4xb2t dr5r7p4xb2ts

जिसके परिणामस्वरूप प्रत्येक geo_point के लिए थोड़ा अधिक संग्रहण ओवरहेड होता है। Geohash_precision को दूरी मान (1 किमी, 1 मीटर, आदि) पर सेट करना शायद इसे निकटतम geohash स्ट्रिंग लंबाई सटीक मान पर संग्रहीत करता है।

नोट: कैसे अजगर

$ pip install python-geohash 
>>> import geohash 
>>> geohash.encode(40.6892,-74.0444) 
'dr5r7p4xb2ts' 

उत्तर

3

का उपयोग कर Elasticsearch 1.0 में geohashes गणना करने के लिए, आप नए Geohash Grid एकत्रीकरण का उपयोग कर सकते हैं।

भूगोल की तरह कुछ काम कर सकता है, लेकिन यह उपरोक्त उदाहरण में दिखाई देने वाले बिंदु घनत्व के आधार पर मनमानी बहुभुज के बजाय आयताकार ग्रिड में चीजों को क्लस्टर करेगा।

यह सच है, लेकिन geohash ग्रिड एकत्रीकरण अपने ग्रिड पर विरल डेटा अच्छी तरह से पर्याप्त अंक संभालती है, इसलिए आप सभी की जरूरत है और आप सुंदर है कि नक्शे में उदाहरण की तरह कुछ हासिल कर सकते हैं।

+0

यह महान काम करता है - धन्यवाद! –

+0

हे @ डैननोबल, डॉटेक। क्या आप में से एक यह बता सकता है कि मैपिंग सेट करते समय 'geohash_precision' के मान सेट का क्या प्रभाव है? [संदर्भ] में (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html#_mapping_options) वे बताते हैं कि मान 'geohash परिशुद्धता सेट करता है। इसे एक पूर्ण भू-रंग की लंबाई या दूरी मान (उदाहरण के लिए 1 किमी, 1 मीटर, 1 मिलीलीटर) पर सेट किया जा सकता है जो छोटे सेल के आकार को परिभाषित करता है। 12 की पूर्ण लंबाई के लिए डिफ़ॉल्ट। 'यह सबसे छोटा सेल का आकार "क्लस्टर को कैसे प्रभावित करता है जिसे हम वापस प्राप्त करते हैं? – kumetix

+1

@ कुमेटिक्स - अच्छा सवाल! मेरा अद्यतन प्रश्न –

1

इस प्रयास करें:

https://github.com/triforkams/geohash-facet

हम इसे उपयोग कर रहा है सर्वर साइड क्लस्टरिंग करने के लिए और यह बहुत अच्छा है।

उदाहरण क्वेरी:

GET /things/thing/_search 
{ 
    "size": 0, 
    "query": { 
     "filtered": { 
      "filter": { 
       "geo_bounding_box": { 
        "Location" 
        : { 
         "top_left": { 
          "lat": 45.274886437048941, 
          "lon": -34.453125 
         }, 
         "bottom_right": { 
          "lat": -35.317366329237856, 
          "lon": 1.845703125 
         } 
        } 
       } 
      } 
     } 
    }, 
    "facets": { 
     "places": { 
     "geohash": { 
      "field": "Location", 
      "factor": 0.85 
     } 
     } 

    } 
} 
+0

देखें यह प्लगइन ऐसा लगता है कि यह मेरे उपयोग के मामले के लिए ठीक काम करेगा, लेकिन जैसा कि डॉटेक ने उल्लेख किया है, भू-ग्रिड समेकन अब मूल रूप से समर्थित हैं। –

+1

यह प्लगइन मूल geohash के लिए अलग है क्योंकि यह खुद को घनत्व btw समायोजित करता है ... –