# Unable to send json data to elastic search

**URL:** <https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506>\
**Category:** Elasticsearch\
**Created:** [August 8, 2018, 12:06pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506 "2018-08-08T12:06:47Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![srdat](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@srdat](https://discuss.elastic.co/u/srdat)\
**Post date:** [August 8, 2018, 12:06pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/1 "2018-08-08T12:06:47Z")

</div>

I'm able to read data from mysql and print in json format but unable to send json data to elastic search.  
Below is my piece of code in python

def exportTable(table\_name):  
query = "SELECT \* FROM "+table\_name  
data = run(query)  
jsondata = (json.dumps(data, indent=4, sort\_keys=True, default=str))  
print jsondata  
print("Exporting MySQL table - "+table\_name+" : "+str(len(data))+" rows")  
for row in jsondata:  
#print row  
res = es.bulk(index = "test8", body = row, refresh = True)  
print (res)

I get below as output:

elasticsearch.exceptions.RequestError: TransportError(400, u'illegal\_argument\_exception', u'Malformed action/metadata line [1], expected START\_OBJECT but found [START\_ARRAY]')

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 8, 2018, 12:22pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/2 "2018-08-08T12:22:35Z")

</div>

What is in a row? Could you share one example ?

---

<div class="post-metadata">

**Author:** ![srdat](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@srdat](https://discuss.elastic.co/u/srdat)\
**Post date:** [August 8, 2018, 12:37pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/3 "2018-08-08T12:37:22Z")

</div>

Thanks for your reply. My json output is like below. I'm trying to insert each data set into elastic search.

[  
{  
"action": "enter",  
"example": "app~textbox~$username\_editbox~enter~lbcleader1",  
"idactions": 1,  
"info": "It enters value on the web control like editbox description etc"  
},  
{  
"action": "set",  
"example": "app~textbox~$username\_editbox~set~lbcleader1",  
"idactions": 2,  
"info": "It sets value on the web control like editbox description etc"  
}  
]

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 8, 2018, 2:06pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/4 "2018-08-08T14:06:39Z")

</div>

This is not a valid JSON for elasticsearch for the BULK API.  
See [https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html)

---

<div class="post-metadata">

**Author:** ![srdat](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@srdat](https://discuss.elastic.co/u/srdat)\
**Post date:** [August 8, 2018, 5:47pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/5 "2018-08-08T17:47:23Z")

</div>

Thank you for reply. I'm new to concepts of elastic search and hence was trying with bulk.

Is there any best way to push data from mysql to elastic search using python. Can you please suggest.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 8, 2018, 6:03pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/6 "2018-08-08T18:03:14Z")

</div>

Bulk API is the right way to do it. Just adapt your code to generate what the Bulk API is expecting.

---

<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:** [September 5, 2018, 6:09pm UTC](https://discuss.elastic.co/t/unable-to-send-json-data-to-elastic-search/143506/7 "2018-09-05T18:09:43Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
