4

I am trying to create a ES index with custom mapping with elasticsearch python to increase the size of text in each document:

mapping = {"mapping":{
           "properties":{
             "Apple":{"type":"text","ignore_above":1000},
             "Mango":{"type":"text","ignore_above":1000}
           }
          }}

Creation:

from elasticsearch import Elasticsearch
es1 = Elasticsearch([{"host":"localhost","port":9200}])
es1.indices.create(index="hello",body=mapping)

Error:

RequestError: RequestError(400, 'mapper_parsing_exception', 'Mapping definition for [Apple] has unsupported parameters: [ignore_above : 10000]') 

But I checked the elasticsearch website on how to increase the text length limit and ignore_above was the option given there. https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html

Any suggestions on how to rectify this will be great.

data_person
  • 4,194
  • 7
  • 40
  • 75

1 Answers1

1

The ignore_above setting is only for keyword types not text, so just change your mapping to this and it will work:

mapping = {"mapping":{
       "properties":{
         "Apple":{"type":"text"},
         "Mango":{"type":"text"}
       }
      }}

If you absolutely need to be able to specify ignore_above then you need to change the type to keyword, like this:

mapping = {"mapping":{
       "properties":{
         "Apple":{"type":"keyword","ignore_above":1000},
         "Mango":{"type":"keyword","ignore_above":1000}
       }
      }}
Val
  • 207,596
  • 13
  • 358
  • 360
  • But I need to change the ```ignore_above``` to 1000 since I am trying to load a pandas DF which has string values greater than 256, the default length. – data_person Jun 04 '20 at 09:27