У меня есть ниже отображения в моем индексе:Сортировать родительский тип основан на одном поле в пределах массива вложенного объекта в elasticsearch
{
"testIndex": {
"mappings": {
"type1": {
"properties": {
"text": {
"type": "string"
},
"time_views": {
"properties": {
"timestamp": {
"type": "long"
},
"views": {
"type": "integer"
}
}
}
}
}
}
}
}
«time_views» на самом деле представляет собой массив, но внутренние атрибуты не массив.
Я хочу отсортировать записи типа 1 на основе максимального значения атрибута "views" для каждой записи типа 1. Я прочитал документацию сортировки elasticsearch, у нее есть решение для случаев использования, что сортировка основана на поле (одиночном или массиве) одного вложенного объекта. но то, что я хочу, отличается. Я хочу, чтобы выбрать максимальное значение «мнения» для каждого документа и сортировать документы на основе этих значений
Я сделал этот JSon запрос
{
"size": 10,
"query": {
"range": {
"timeStamp": {
"gte": 1468852617347,
"lte": 1468939017347
}
}
},
"from": 0,
"sort": [
{
"time_views.views": {
"mode": "max",
"nested_path": "time_views",
"order": "desc"
}
}
]
}
, но я получил эту ошибку
{
"error": {
"phase": "query",
"failed_shards": [
{
"node": "n4rxRCOuSBaGT5xZoa0bHQ",
"reason": {
"reason": "[nested] nested object under path [time_views] is not of nested type",
"col": 136,
"line": 1,
"index": "data",
"type": "query_parsing_exception"
},
"index": "data",
"shard": 0
}
],
"reason": "all shards failed",
"grouped": true,
"type": "search_phase_execution_exception",
"root_cause": [
{
"reason": "[nested] nested object under path [time_views] is not of nested type",
"col": 136,
"line": 1,
"index": "data",
"type": "query_parsing_exception"
}
]
},
"status": 400
}
как я упомянутый выше time_views - массив, и я предполагаю, что эта ошибка из-за этого. Даже я не могу использовать сортировку на основе функции поля массива, потому что «time_views» не является примитивным типом. Я думаю, что мой последний шанс - написать обычную сортировку по сценариям, но я не знаю, как это сделать. , пожалуйста, скажите мне мою ошибку, если можно достичь того, чего я хочу, иначе дайте мне простой пример сценария.
Тпх :)