У меня 200000 пользователей вasticsearch, и у каждого пользователя есть свой почтовый ящик.Теперь предположим, что три пользователя user A, B и C. Пользователь A и пользователь C отправляют сообщение пользователю B. Поэтому, когда пользователь B выбирает список пользователей изasticsearch, тогда пользователи A и C должны быть в верхней части списка пользователей, потому что A и B наиболеепоследнее отправленное сообщение пользователю B. Я пишу свой запросasticsearch, который приведен ниже
{
"_source": [
"db_id",
"username",
"message_privacy"
],
"from": "0",
"size": "40",
"sort": [{"messages_received.created_at" : "desc"}],
"query": {
"bool": {
"must": [
{
"term":{
"type":"user"
}
},
{
"has_child": {
"type": "messages_received",
"inner_hits": {
"sort": [
{
"created_at": "desc"
}
],
"size": 1,
"_source": [
"id",
"user_id",
"object_id",
"created_at"
]
},
"query": {
"bool": {
"must": [
{
"term": {
"object_id": "u-5"
}
}
]
}
}
}
}
]
}
}
}
Но когда я запускаю запрос, он выдает мне ошибку
{"error": {"root_cause ": [{" type ":" query_shard_exception "," reason ":" Не найдено сопоставления для [messages_received.created_at] для сортировки по "," index_uuid ":" 5jsM1khYRrC0cjWbRjsx5A "," index ":" trending "}],
Я ищу эту проблему в Google, но не нашел подходящего решения для моего сценария.
Mapping
{
"type": {
"type": "join",
"eager_global_ordinals": true,
"relations": {
"post": [
"comments",
"place",
"media",
"views",
"likes",
"post_box"
],
"box": "posts",
"user": [
"user_views",
"user_likes",
"followers",
"post",
"blocked",
"followings",
"box",
"block",
"notifications",
"messages_received",
"messages_sent"
],
"posts": "posts_views"
}
}}