Это фрагмент моего отображения:
"products": {
"properties": {
"availability_date": {
"type": "date"
},
"banner": {
"properties": {
"id": {
"type": "long"
},
"copyright": {
"type": "keyword"
},
"url": {
"type": "keyword"
}
}
},
"categories": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"category_type": {
"type": "keyword"
},
"name": {
"type": "text"
}
}
}
}
Я хочу отсортировать результаты поиска на основе "category.name"
Я пытаюсь поразить его:
"sort":[
{
"categories.name":{
"order":"asc",
"nested_path":"categories"
}
}
],
Но это не работает и возвращает сообщение:
"Fielddata отключен в текстовых полях по умолчанию. Установите fielddata = true на [Categories.name], чтобы загружать fielddata в память путем инвертирования инвертированного индекса. Обратите внимание, что это может, однако, использовать значительную память. В качестве альтернативы можно использовать поле ключевого слова вместо этого. "
Итак, я меняю отображение на:
"products": {
"properties": {
"availability_date": {
"type": "date"
},
"banner": {
"properties": {
"id": {
"type": "long"
},
"copyright": {
"type": "keyword"
},
"url": {
"type": "keyword"
}
}
},
"categories": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"category_type": {
"type": "keyword"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "sort_normalizer"
}
}
}
}
}
}
Как мне теперь выполнить сортировку? Я попробовал это:
"sort":[
{
"categories.name.keyword":{
"order":"asc",
"nested_path":"categories.name"
}
}
],
Это не работает с причиной:
"[nested] не удалось найти вложенный объект по пути [category.name]"
Некоторые другие карты работают, но дают мне несортированный результат