Python Elasticsearch создает сопоставление индексов

Я пытаюсь создать индекс ES с пользовательским сопоставлением с помощью elasticsearch python, чтобы увеличить размер текста в каждом документе:

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

Творчество:

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

Ошибка:

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

Но я проверил на веб-сайте elasticsearch, как увеличить предел длины текста, и там была указана опция ignore_above. https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html

Любые предложения о том, как исправить это, будут отличными.


person data_person    schedule 04.06.2020    source источник


Ответы (1)


Параметр ignore_above предназначен только для типов keyword, а не text, поэтому просто измените свое сопоставление на это, и оно будет работать:

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

Если вам абсолютно необходимо указать ignore_above, вам нужно изменить тип на keyword, например:

mapping = {"mapping":{
       "properties":{
         "Apple":{"type":"keyword","ignore_above":1000},
         "Mango":{"type":"keyword","ignore_above":1000}
       }
      }}
person Val    schedule 04.06.2020
comment
Но мне нужно изменить ignore_above на 1000, так как я пытаюсь загрузить pandas DF со строковыми значениями больше 256, длина по умолчанию. - person data_person; 04.06.2020