java.io.StreamCorruptedException: invalid internal transport message format

You will see this is if you try to connect to the cluster syncing port instead of the API port.

The API location you curl from is configured in elasticsearch.yml as http.port, default 9200.

The port for nodes to sync with each other in a cluster is transport.tcp.port, default 9300.

See also ElasticSearch 0.90.2 StreamCorruptedException on asking port 9300


I FIXED IT changing the cluster.name from older one elasticsearch -> to new one prayagcluster at cluster section of elasticsearch.yml.

prayag@prayag:~$ vi JVM/elasticsearch-0.90.5/config/elasticsearch.yml 

################################### Cluster ###################################

# Cluster name identifies your cluster for auto-discovery. If you're running
# multiple clusters on the same network, make sure you're using unique names.
#
cluster.name: prayagcluster