user1187968
user1187968

Reputation: 8016

Python - After i insert geo data into elastic search, how do I search the data?

I'm am using python-elasticsearch to insert geo data into the engine as below, but what function or method can I use to search for my data? Can you give an example please?

mappings = { 
            "doc": {
                   "properties": {
                                  "geo": {
                                         "properties": {
                                            "location": {"type": "geo_point"}
                                          }
                                  }
                   }
            }
          }
es.indices.create(index='geodata', body=mappings)

# ...
es_entries['geo'] =  {'location':str(data['_longitude_'])+","+str(data['_latitude_'])}
# ...
es.index(index="geodata", doc_type="doc", body=es_entries)

Upvotes: 0

Views: 431

Answers (1)

Dekel
Dekel

Reputation: 62596

You can use the Geo Distance Query:

{
    "query": {
        "bool" : {
            "must" : {
                "match_all" : {}
            },
            "filter" : {
                "geo_distance" : {
                    "distance" : "10km",
                    "geo.location" : {
                        "lat" : 10,
                        "lon" : -10
                    }
                }
            }
        }
    }
}

You can use both es.search and elasticsearch.helpers.scan, for example:

res = es.search(index='geodata', body= { ... }) # put the above dictionary in the `body`

Upvotes: 1

Related Questions