Can you try network.host: "{elastic_ip}" instead of network.publish_host: "{elastic_ip}"?
Note that you can also use _ec2_ or _ec2:XXX_ if you are using cloud aws plugin. See https://www.elastic.co/guide/en/elasticsearch/plugins/current/cloud-aws-discovery.html#cloud-aws-discovery-network-host