简体   繁体   中英

Python Elasticsearch create index mapping

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.

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}
       }
      }}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM