При попытке отсортировать данные по полю или сгруппировать их для подсчета количества записей OpenSearch возвращает ошибку «Text fields are not optimised for operations that require per-document field data like aggregations and sorting».
Поле имеет тип text. В OpenSearch поля этого типа предназначены только для полнотекстового поиска и не поддерживают сортировку и агрегацию.
Чтобы поле можно было использовать для сортировки и группировки, создайте индекс с полем типа keyword и переиндексируйте данные.
Создайте новый индекс с типом поля keyword:
PUT /<index_name_new>{"mappings": {"properties": {"<field_name>": {"type": "keyword"},…}}}
Где:
<index_name_new> — название нового индекса.
<field_name> — название поля.
Скопируйте данные из старого индекса в новый:
POST /_reindex{"source": {"index": "<index_name_old>"},"dest": {"index": "<index_name_new>"}}
Где:
<index_name_old> — название старого индекса.
<index_name_new> — название нового индекса.
Переключите приложения на новый индекс.
Для этого удалите старый индекс и создайте алиас:
DELETE /<index_name_old>PUT /<index_name_new>/_alias/<index_name_old>
Где:
<index_name_old> — название старого индекса.
<index_name_new> — название нового индекса.
Если индекс был создан автоматически через шаблон, то создайте новый шаблон с указанием в маппинге правильных типов данных.