invalid literal for int() with base 10 ElasticSearch

I have a problem with elasticsearch.

I cannot write string values from pandas df to elasticsearch. I’ getting an error:

ValueError: invalid literal for int() with base 10: 'Marc34' 

Elasticsearch index:

request_body = {         "settings" : {             "number_of_shards": 6,             "number_of_replicas": 1         },          'mappings': {             'doc': {                 'properties': {                     'name_and_id': {'index': 'not_analyzed', 'type': 'string'},                     'surname_and_id': {'index': 'not_analyzed', 'type': 'string'},                     'match': {'index': 'not_analyzed', 'type': 'integer'}                 }}}     } print("creating 'info_main' index...") res = es.index(index="info_main",body=request_body, doc_type='info_m') 

How I am saving to ES:

def chunk_bulk(d):      bulk_data = []      for index, row in d.iterrows():         data_dict = {}         for i in range(len(row)):             data_dict[d.columns[i]] = int(row[i])         op_dict = {             "index": {                 "_index": 'info_main',                 "_type": 'info_m',         }         }         bulk_data.append(op_dict)         bulk_data.append(data_dict)     res = es.bulk(index = 'info_main', body = bulk_data)     return res  sum_ = 0 i = 0 while i <= len(data):     j = i + 9000     d = data[i:j]     i = j     sum_ = sum_ + len(d)     chunk_bulk(d) print(sum_) 

Does anyone know what can cause the problem? If I use only integers and change mappings to an integer, everything works great.

Any help is welcomed. Thanks in advance.