#  TopicID на dynamic: вытаскиваем тред целиком
Difrex(mobile) (tavern,23) → All  –  08:02:22 2018-01-05

Я тут ковыряя тредовый режим для dynamic'а понял, что проще добавить фичу в бэкенд,
чем разгребать свой говнокод на JS.

Так вот суть: в индексе каждому сообщению присваивается topicid в формате UUID(RFC 4122).
Зная topicid мы можем выбрать целиком тред с нужной нам сортировкой.

Чтобы вытащить тред по интересующему сообщению(мы знаем msgid) нам нужно будет сделать 2 запроса:
* Первый - узнаем topicid из сообщения
* Второй - вытягиваем ветку

Здесь и далее запросы в json отправляются методом POST на https://dynamic.lessmore.pw/search2.

Узнаем topicid
====
{
"sort": [
{
"date": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}
],
"query": {
"query_string": {
"fields": [
"msgid"
],
"query": "apfIchd9i8HMMc5DKJNI"
}
},
"size": 1
}
====


В ответ нам вернется документ сообщения
====
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": null,
"hits": [
{
"_index": "idec5",
"_type": "post",
"_id": "apfIchd9i8HMMc5DKJNI",
"_score": 9.252761,
"_source": {
...
"topicid": "fcb208f7-c947-42bc-a037-73d63b137913"
},
"sort": [
1514976123000,
9.252761
]
}
]
}
}
====


Теперь зная topicid можно вытянуть весь тред с сортировкой от старых к новым(или наоборот).

Модифицируем первый запрос
====
{
"sort": [
{
"date": {
"order": "asc"
}
},
{
"_score": {
"order": "asc"
}
}
],
"query": {
"query_string": {
"fields": [
"topicid"
],
"query": "fcb208f7-c947-42bc-a037-73d63b137913"
}
},
"size": 100
}
====


Ответом будет список с документами ветки отсортированный по дате от старых сообщений к новым.

Новый поиск будет доступен тут https://dynamic.lessmore.pw/search2 в ближайшее время, и нидекс будет наполняться совсем неторопливо.
После полного реиндекса поиск будет объявлен стабильным и доступен по https://dynamic.lessmore.pw/search.
Так же фетчер, маппинг, веб будут документированы и снабжаться инструкцией по развертке.

// Народ, а каких бы еще фич хотелось бы вам?