Step:

.Change Kibana & elk order.  Now elk import template_filebeat, then wait logstash put log to elk. elk can get index EX:filebeat-6.4.2-2018.11.19 filebeat-6.4.2-2018.11.20
Then kibana import index-partten and set default.

  
  
#!/bin/bash  
  
echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories  
echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories  
echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories  
apk --no-cache upgrade  
apk --no-cache add curl  
  
echo "=====Elk config ========"  
until echo | nc -z -v elasticsearch 9200; do  
    echo "Waiting Elk Kibana to start..."  
    sleep 2  
done  
  
code="400"  
until [ "$code" != "400" ]; do  
    echo "=====Elk importing mappings json ======="  
    curl -v -XPUT elasticsearch:9200/_template/template_filebeat -H 'Content-Type: application/json' -d @/usr/share/elkconfig/config/template_filebeat.json 2>/dev/null | head -n 1 | cut -d ':' -f2|cut -d ',' -f1 > code.txt  
    code=`cat code.txt`  
    sleep 2  
done  
  
  
#reload index for geo_point  
echo "=====Get kibana idnex lists ======="  
indexlists=()  
while [ ${#indexlists[@]} -eq 0 ]  
do  
    sleep 2  
    indexlists=($(curl -s elasticsearch:9200/_aliases?pretty=true | awk -F\" '!/aliases/ && $2 != "" {print $2}' | grep filebeat-))  
done  
  
sleep 10  
  
  
#========kibana=========  
id="f1836c20-e880-11e8-8d66-7d7b4c3a5906"  
  
echo "=====Kibana default index-pattern ========"  
until echo | nc -z -v kibana 5601; do  
    echo "Waiting for Kibana to start..."  
    sleep 2  
done  
  
code="400"  
until [ "$code" != "400" ]; do  
    echo "=====kibana importing json ======="  
    curl -v -XPOST kibana:5601/api/kibana/dashboards/import?force=true -H "kbn-xsrf:true" -H "Content-type:application/json" -d @/usr/share/elkconfig/config/index-pattern-export.json 2>/dev/null | head -n 1 | cut -d ':' -f2|cut -d ',' -f1 > code.txt  
    code=`cat code.txt`  
    sleep 2  
done  
  
code="400"  
until [ "$code" != "400" ]; do  
    curl -v -XPOST kibana:5601/api/kibana/settings/defaultIndex -H "kbn-xsrf:true"  -H "Content-Type: application/json" -d "{\"value\": \"$id\"}"  2>/dev/null | head -n 1 | cut -d ':' -f2|cut -d ',' -f1 > code.txt  
    code=`cat code.txt`  
    sleep 2  
done  
  
tail -f /dev/null  
  

.template_filebeat template_filebeat.json

* template_filebeat.json  is from

GET _cat/indices?v
you can see some index like //GET _cat/indices?v&s=index

GET filebeat-6.4.2-2018.11.19

ok use your mappings replace this mappings

  
  
{  
  "index_patterns": ["filebeat*"],  
  "settings": {  
    "number_of_shards": 1  
  },  
  "mappings": {  
    "doc": {  
      "properties": {  
        "@timestamp": {  
          "type": "date"  
        },  
  
  ...  
  
}  
  

Only replace mappings. Official website have example.
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

And  Change

“coordinates”: {
“type”: “float”  => “geo_point”
},
Save file name:template_filebeat.json  

Usually new docker elk logstash already have geoip. add_field like picture and mutate add some item. Here is change type with templates.

So this step mean you must let logstash send log to elk, get fileds to become template.

.index-partten index-pattern-export.json

see this url, know how to do
https://sueboy.blogspot.com/2018/11/kibana-default-index-pattern.html

Important:Do this must refresh, then export json that is corrent file.

Now 100% can see map.