Не удалось сохранить длину текстового поля для ключевого слова выше 32766

Я пытался сохранить поле в качестве ключевого слова типа для поддержки чувствительного к регистру текстового поиска,

Но когда я пытаюсь сохранить текст длиной более 32766 символов, он не может его сохранить, выдавая следующее исключение

    Elasticsearch exception [type=illegal_argument_exception, reason=Document contains at least one immense term in field="case_message_message.lowcase" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped.  Please correct the analyzer to not produce such terms.  The prefix of the first immense term is: '[-32, -80, -84, -32, -79, -122, -32, -80, -126, -32, -80, -105, -32, -80, -77, -32, -79, -126, -32, -80, -80, -32, -79, -127, 58, 32, -32, -80, -107, -32]...', original message: bytes can be at most 32766 in length; got 37632]

Есть ли способ сохранить этот текст выше 32766,

Эластичный поиск версии 6.1.2

Любая помощь очень ценится.

ОБНОВЛЕНИЕ 1:

Это отображение моего индекса, который я использовал с помощью пользовательского нормализатора, а также нормализатора

{
   "org-16-database": {
      "mappings": {
         "org-16-table": {
            "properties": {
               "My field": {
                  "type": "text",
                  "fields": {
                     "keyword": {
                        "type": "keyword"
                     },
                     "lowcase": {
                        "type": "keyword",
                        "normalizer": "my_normalizer"
                     }
                  },
                  "fielddata": true
               }
            }
         }
      }
   }
}

настройки

    {
       "org-16-database": {
          "settings": {
             "index": {
                "number_of_shards": "5",
                "provided_name": "org-16-database",
                "creation_date": "1521198435444",
                "analysis": {
                   "normalizer": {
                      "my_normalizer": {
                         "filter": [
                            "lowercase"
                         ],
                         "type": "custom"
                      }
                   }
                },
                "number_of_replicas": "1",
                "uuid": "lN-7iYloQWy7oaD3uMIYGQ",
                "version": {
                   "created": "6010299"
                }
             }
          }
       }
    }

2 ответа

Как написано в документации при создании нового ключевого поля, по умолчанию включен параметр ignore_above. Этот параметр также полезен для защиты от ограничения длины байта термина Lucene, равного 32766. Вы можете увеличить этот предел, изменив отображение, без переиндексации. Максимальное допустимое значение составляет 10922

Можете ли вы попробовать с фильтром Token длины

Vist: https://www.elastic.co/guide/en/elasticsearch/reference/6.1/analysis-length-tokenfilter.html

Другие вопросы по тегам