# Can't get Tile Map working (Kibana 4.1.1, ElasticSearch 2.7.1)

**URL:** <https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602>\
**Category:** Kibana\
**Created:** [September 18, 2015, 9:53pm UTC](https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602 "2015-09-18T21:53:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dougdaly](https://avatars.discourse-cdn.com/v4/letter/d/c0e974/32.png) [@dougdaly](https://discuss.elastic.co/u/dougdaly)\
**Post date:** [September 18, 2015, 9:53pm UTC](https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602/1 "2015-09-18T21:53:43Z")

</div>

Though the Kibana tutorial works fine w/ the Tile Map, my data always gives me a 'no data found' error. The lat/longs are read in ok and the values are valid.

Below are the details:  
The template seems simple enough:  
curl -XPUT localhost:9200/\_template/baby-names -d '  
{  
"template" : "baby-names",  
"mappings" : {  
"birth\_data" : {  
"dynamic\_templates" : [ {  
"string\_fields" : {  
"mapping" : {  
"type" : "string", "index" : "not\_analyzed", "omit\_norms" : true  
},  
"match\_mapping\_type" : "string",  
"match" : "\*"  
}  
} ],  
"\_all": {  
"enabled" : false  
},  
"properties" : {  
"geo" : {  
"properties" : {  
"coordinates" : {  
"type" : "geo\_point"  
}}}}}}}'

Also the logstash 'baby-names.conf' file seems straightforward:  
input {  
tcp {  
port =\> 3333  
} }  
filter {  
grok {  
patterns\_dir =\> "./patterns"  
match =\> ["message", "%{TEXT\_NO\_COMMA:State},%{TEXT\_NO\_COMMA:Sex},%{NUMBER:year:int},%{TEXT\_NO\_COMMA:Name},%{NUMBER:NumBirths:int},%{NUMBER:latitude:float},%{NUMBER:longitude:float},%{TEXT\_NO\_COMMA:geohash}"]  
}  
mutate {  
add\_field =\> [logdate, "Jan 01 %{year}"]  
}  
mutate {  
rename =\> {  
"latitude" =\> "[geo][coordinates][lat]"  
"longitude" =\> "[geo][coordinates][lon]"  
}}  
date {  
match =\> ["logdate", "MMM dd YYYY"]  
target =\> "@timestamp"  
}}  
output {  
elasticsearch {  
embedded =\> false  
action =\> "index"  
host =\> "localhost"  
template\_name =\> "baby-names"  
index =\> "baby-names"  
}}

Though the data looks good in Kibana with other graphs, the Tile Map always barfs. Any advice?

Thank you!

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [September 19, 2015, 6:19am UTC](https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602/2 "2015-09-19T06:19:29Z")

</div>

You need a single geo field for KB to be able to map, you cannot have a lat and a lon in separate ones like that.

---

<div class="post-metadata">

**Author:** ![dougdaly](https://avatars.discourse-cdn.com/v4/letter/d/c0e974/32.png) [@dougdaly](https://discuss.elastic.co/u/dougdaly)\
**Post date:** [September 24, 2015, 4:33pm UTC](https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602/3 "2015-09-24T16:33:05Z")

</div>

Thank you for the help! After some struggles, here's what I learned which will hopefully save someone else some grief:

1. Make sure your index is pointing to the right template.  
Get all templates from: curl -XGET localhost:9200/\_template/\*
2. Check if your mapping is what you expect:  
curl -XGET 'localhost:9200/\<index\_name\>/\_mapping'?pretty
3. In your Logstash config file, specify the right template\_name, index and document\_name:  
In Logstash config file:  
output {  
elasticsearch {  
action =\> "index"  
template\_name =\> "templateNAME"  
index =\> "indexNAME"  
document\_type =\> "documentTYPE" }  
In Elasticsearch template: (I made a JSON file to generate the template.)  
curl -XPUT localhost:9200/\_template/indexNAME -d '  
"template" : "templateNAME",  
"mappings" : {  
"documentTYPE" : {  
... (other stuff)
4. Get the geo-coordinates aligned between Logstash and ElasticSearch  
In Logstash config file (I already have floating point fields called 'latitude' and 'longitude') :  
mutate {  
rename =\> {  
"latitude" =\> "[geo][coordinates][lat]"  
"longitude" =\> "[geo][coordinates][lon]"  
}}  
Back to the Elasticsearch template file. This is one level indented from the documentTYPE from before:  
"properties" : {  
"@version": { "type": "string", "index": "not\_analyzed" },  
"geo" : {  
"properties" : {  
"coordinates" : {  
"type" : "geo\_point"  
}}}

Hope this helps!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 2:12pm UTC](https://discuss.elastic.co/t/cant-get-tile-map-working-kibana-4-1-1-elasticsearch-2-7-1/29602/4 "2017-07-06T14:12:32Z")

</div>


